我有 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/