r - 如果值存在于 r 的其他列中,如何创建列标记?

标签 r dataframe dplyr

我有 5 列 5 个不同的 p 值。当 5 列中的任何一列中存在值时,我希望在新列中进行标记。

我的数据是这样的:

Gene   pvalue_group1 pvalue_group2 pvalue_group3 pvalue_group4 pvalue_group5
Gene1     0.01           0.2             NA           NA            NA
Gene2      NA            0.001           NA           NA            NA
Gene3     0.05           0.7             0.09         0.2           0.001  

我希望输出如下所示的列:

Gene   pvalue_group1 pvalue_group2 pvalue_group3 pvalue_group4 pvalue_group5 Group
Gene1     0.01           0.2             NA           NA            NA       Group1, Group2
Gene2      NA            0.001           NA           NA            NA       Group2
Gene3     0.05           0.7             0.09         0.2           0.001    Group1, Group2, Group3, Group4, Group5

我尝试基于类似的问题创建代码,尝试使用 dplyr 和 mutate() 但我还没有走得太远,如果能提供任何关于我可以尝试的其他功能的帮助,我们将不胜感激。

示例输入数据:

df <- structure(list(Gene = c("Gene1", "Gene2", "Gene3"), pvalue_group1 = c(0.01, 
NA, 0.05), pvalue_group2 = c(0.2, 0.001, 0.7), pvalue_group3 = c(NA, 
NA, 0.09), pvalue_group4 = c(NA, NA, 0.2), pvalue_group5 = c(NA, 
NA, 0.001)), row.names = c(NA, -3L), class = c("data.table", 
"data.frame"))

最佳答案

library(data.table)

setDT(df)

x <- names(df)[-1]

df[, test := apply( .SD, 1, \(i) paste(x[which(!is.na(i))], collapse=',') ), .SDcols=x]

关于r - 如果值存在于 r 的其他列中,如何创建列标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73282227/

相关文章:

r - 在 r 中的条形图中居中条形标签

r - R CMD build 和 R CMD INSTALL --build in R 之间的区别

python - 根据现有列中的值创建包含这些行的新列

apache-spark - Spark : Order of column arguments in repartition vs partitionBy

r - 如何在R中使用索引函数创建多列?

r - 对许多 x 值进行向量化 head(which(t > x), n=1)

r - SparkR中使用grep出错

regex - 用R中的数据帧中的正则表达式检测单词边界

r - 从分组数据中选择随机的观察组(行)

r - 计算与当前行相关的条件匹配的行