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

我曾try 根据类似的问题创建代码,try 使用dplyr和samate(),但我还没有取得很大进展,如果有任何关于我可以try 哪些其他函数的帮助,将不胜感激.

输入数据示例:

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相关问答推荐

混淆矩阵,其中每列和等于1

使用rlang s arg_match判断函数输入列表

如何在R中正确对齐放射状图中的文本

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

名称输出pmap on tible

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

使用gcuminc,如何使用逗号格式化风险表?

在另存为PNG之前隐藏htmlwidget绘图元素

使用列/行匹配将两个不同维度的矩阵相加

您是否可以折叠R中的重复行,同时保留基于所选列的值?

当我们有多个反斜杠和/特殊字符时使用Gsubing

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

查找所有站点的最小值

R -使用矩阵reshape 列表

ggplot R:X,Y,Z使用固定/等距的X,Y坐标绘制六边形热图

计算使一组输入值最小化的a、b和c的值

防止正则表达式覆盖以前的语句

隐藏基于 case 总数的值

在shiny /bslb中,当卡片是从json生成时,如何水平排列卡片?