r - 使用 R 将数据集中的多列合并为一列

标签 r

我有以下数据框:

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/

相关文章:

r - 如何根据 R 中最近的匹配时间压缩数据帧

r - 以 R 或 dplyr 为基础的矩阵内的矩阵的平均值

r - 使用 ggmap 绘制 OpenStreetMap

r - 从位置 x 选择 R 中的每第 n 列

r - 在 R 中创建一个变量并添加到循环中的数据框

r - Linux 上的 Rscript 是否会在执行脚本之前对文件进行快照?

r - 可以在不打开 R 环境的情况下运行 RShiny 应用程序吗?

r - 为什么 mutate 不接受 data.frame 作为要嵌套的列?

r - 当我执行 lm 函数时,如何忽略 NA 数据?

r - 检测不适合R中对数函数的离群点