R 将二进制向量组转换为一列
我有多个二进制向量,指示某人是否属于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
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