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