How to Create a Single Dummy Variable with conditions in multiple columns?

前端 未结 3 998
执念已碎
执念已碎 2020-12-11 12:56

I am trying to efficiently create a binary dummy variables (1/0) in my data set based on whether or not one or more of 7 variables (col9-15) in the data set take on a specif

3条回答
  •  悲&欢浪女
    2020-12-11 13:13

    you can also try this (borrowing sample data from agstudy's answer)

    > set.seed(123)
    > dat <- matrix(sample(c(35,1:100),size=15*20,rep=T),ncol=15,byrow=T)
    
    
    #Create indicator initialized with 0.
    > indicator <- rep(0, nrow(dat))
    #Replace the elements at indices which are equal to rows in dat where you find 35
    > indicator[which(dat[,9:15]==35)%%nrow(dat)] <- 1
    #bind the indicator to original data
    > cbind(dat, indicator)
                                                        indicator
     [1,] 29 79 41 89 94  4 53 90  55 46 96 45 68 57 10         0
     [2,] 90 24  4 33 96 89 69 64 100 66 71 54 60 29 14         0
     [3,] 97 91 69 80  2 48 76 21  32 23 14 41 41 37 15         0
     [4,] 14 23 47 26 86  4 44 80  12 56 20 12 76 90 37         0
     [5,] 67  9 38 27 82 45 81 82  80 44 76 63 71 35 48         1
     [6,] 22 38 61 35 11 24 67 42  79 10 43 99 90 89 17         0
     [7,] 13 65 34 66 32 18 79  9  47 51 60 33 49 96 48         0
     [8,] 89 92 61 41 14 94 30  6  95 72 14 55 96 59 40         0
     [9,] 65 32 31 22 37 99 15  9  14 69 62 90 67 74 52         0
    [10,] 66 83 79 98 44 31 41  1  18 85 23 24  7 24 73         0
    [11,] 85 50 39 24 11 39 57 21  44 22 50 35 65 37 35         1
    [12,] 53 74 22 41 26 63 18 87  75 67 62 37 53 88 58         0
    [13,] 84 31 71 26 60 48 26 57  92 91 27 32 99 62 94         0
    [14,] 47 41 66 15 57 24 97 60  52 40 88 36 29 17 17         0
    [15,] 48 25 21 68  4 70 35 41  82 92 28 97 73 69  5         0
    [16,] 39 48 56 70 92 62 43 54   5 26 40 19 84 15 81         0
    [17,] 55 66 17 63 31 73 40 97  97 73 25 22 59 27 53         0
    [18,] 79 16 40 47 87 93 89 68  95 52 58 33 35  2 50         1
    [19,] 87 35  7 16 77 74 98 47   7 65 76 13 40 22  5         0
    [20,] 39  6 22  5 67 30 10  7  88 76 82 99 10 10 80         0
    

提交回复
热议问题