R 创建基于值采用列名的新列

R 创建基于值采用列名的新列,r,dplyr,R,Dplyr,我有一个包含二进制值的表,我想将其汇总到一列中。以下是一个例子: df <- data.frame("User" = c("User A", "User B", "User C"), "quality 1" = c(0,0,1), "quality 2" = c(1,0,0), "quality 3" = c(0,1,0)) 您可以尝试添加到相同的d

我有一个包含二进制值的表,我想将其汇总到一列中。以下是一个例子:

df <- data.frame("User" = c("User A", "User B", "User C"), "quality 1" = c(0,0,1), "quality 2" = c(1,0,0), "quality 3" = c(0,1,0))

您可以尝试添加到相同的
df

df$qualityNumber <- apply(df[,-1],1,function(x) names(x)[which(x==1)])

    User quality.1 quality.2 quality.3 qualityNumber
1 User A         0         1         0     quality.2
2 User B         0         0         1     quality.3
3 User C         1         0         0     quality.1
另一种方法:

df$qualityNumber <- names(df)[max.col(df == 1, ties.method = "first")]

这是完美的;非常感谢。
df$qualityNumber <- apply(df[,-1],1,function(x) names(x)[which(x==1)])

    User quality.1 quality.2 quality.3 qualityNumber
1 User A         0         1         0     quality.2
2 User B         0         0         1     quality.3
3 User C         1         0         0     quality.1
df[,c(1,5)]

    User qualityNumber
1 User A     quality.2
2 User B     quality.3
3 User C     quality.1
df$qualityNumber <- names(df)[max.col(df == 1, ties.method = "first")]
> df
    User quality.1 quality.2 quality.3 qualityNumber
1 User A         0         1         0     quality.2
2 User B         0         0         1     quality.3
3 User C         1         0         0     quality.1