R 将二进制向量组转换为一列

R 将二进制向量组转换为一列,r,R,我有多个二进制向量,指示某人是否属于R中的某个组: Group1 <- rbinom(100,1,.5) Group2 <- rbinom(100,1,.5) Group3 <- rbinom(100,1,.5) Group4 <- rbinom(100,1,.5) Group5 <- rbinom(100,1,.5) Group6 <- rbinom(100,1,.5) Group7 <- rbi

我有多个二进制向量,指示某人是否属于R中的某个组:

    Group1 <- rbinom(100,1,.5)
    Group2 <- rbinom(100,1,.5)
    Group3 <- rbinom(100,1,.5)
    Group4 <- rbinom(100,1,.5)
    Group5 <- rbinom(100,1,.5)
    Group6 <- rbinom(100,1,.5)
    Group7 <- rbinom(100,1,.5)
    Group8 <- rbinom(100,1,.5)
    Group9 <- rbinom(100,1,.5)
    d <- data.frame(Group1, Group2, Group3, Group4, Group5, Group6, Group7, Group8, Group9)

Group1欢迎来到stack overflow,尽量对回答您问题的人更加尊重一点

我认为你有一个行的问题,你需要首先找出什么是等于1的列数,然后你需要最小的列数,下面的tidyverse代码应该可以很清楚地解决这个问题

库(tidyverse)
种子(42)
组1 4 1 0 0 0 1 0 1 1 1 1
#>  5      1      1      0      1      1      0      1      1      1      1
#>  6      1      1      0      1      0      1      0      1      0      1
#>  7      1      1      1      0      1      1      1      0      1      1
#>  8      0      1      0      0      0      0      0      0      0      2
#>  9      1      1      0      0      0      1      0      0      0      1
#> 10      1      0      0      0      0      0      1      1      1      1
#> # ... 还有90行

由(v0.3.0)于2020-06-07创建,我认为@onyanbu建议的
max.col
应该与
ties.method='first'
一起使用,在出现tie时,它将为您提供第一个值

d$Group <- max.col(d, ties.method = 'first')
d

#   Group1 Group2 Group3 Group4 Group
#1       0      1      0      1     2
#2       0      1      0      1     2
#3       1      1      1      1     1
#4       0      0      0      1     4
#5       1      1      0      1     1
#6       1      0      0      0     1
#7       0      1      1      1     2
#8       1      1      0      1     1
#9       0      0      1      1     3
#10      0      0      1      0     3

d$Group您可以使用
match
apply
查找第一个
1

apply(d, 1, match, x=1)
#[1]  1  2  3 NA
TRUE
is

apply(d, 1, match, x=TRUE)
#[1]  1  2  3 NA
数据:


(d)您要找的是
max.col(d)
?当然要找的不止这些。然后您应该给出一个示例数据和预期结果。
apply(d, 1, match, x=TRUE)
#[1]  1  2  3 NA
(d <- data.frame(g1=c(1,0,0,0), g2=c(0,1,0,0), g3=c(0,1,1,0)))
#  g1 g2 g3
#1  1  0  0
#2  0  1  1
#3  0  0  1
#4  0  0  0