我有以下数据框:
dF
x y z w
<lgl> <lgl> <lgl> <lgl>
1 TRUE FALSE TRUE FALSE
2 TRUE FALSE TRUE FALSE
3 TRUE FALSE TRUE FALSE
我想创建一个新列,其中每行存储等于 TRUE 的列,因此例如第 1 行将是 c(x,z)(例如,采用字符格式)。
在 R 中希望得到以下输出
x y z w new
TRUE FALSE TRUE FALSE x,z
TRUE TRUE TRUE FALSE X,Y,Z
FALSE FALSE TRUE TRUE Z,W
我尝试了 stack over flow 中的代码之一,但我得到了列表形式的结果,即:c(x,z) 但我想要x,z 请在这方面指导我 谢谢。
最佳答案
这也可以通过 paste0()
和 which()
来实现:
#Data
df <- data.frame(x=rep(T,3),
y=rep(F,3),
z=rep(T,3),
w=c(T,F,T))
#Apply
df$Var <- apply(df,1,function(x) paste0(names(x)[which(x==T)],collapse = ','))
输出:
x y z w Var
1 TRUE FALSE TRUE TRUE x,z,w
2 TRUE FALSE TRUE FALSE x,z
3 TRUE FALSE TRUE TRUE x,z,w
关于r - 使用 R 将数据集中的多列合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63757345/