我有一列描述性数据,我希望将其子集到新的列中.在我的专栏中,有一些基因被定义为从低到高的置信度.对于每一种置信度类型,我试图创建自己的列,其中包含基因,然后根据我原始数据中分配给它们的置信度将其分配到其中.

例如,我的数据如下所示:

Gene Prioritization

Medium High:CCNL2 C1orf170 PLEKHN1 RP11-54O7.17 HES4 | Low:AL645608.7 AL390719.1 WASH7P CPTP

Medium High:CCNL2 ATAD3A C1orf222 CALML6 TMEM52 | Medium Low:GNB1  RER1 NADK | Low:AL109917.1

Medium High:PRDM16 | High: ACE

我希望将其转换为类似以下内容:

Low              Medium Low         Medium High    High
AL645608.7       GNB1               CCNL2          ACE
AL390719.1       C1orf170           RER1
...

因此,每个基因都归入了一个列,显示了它被赋予了多大的置信度(即使一个基因有多个置信度,它也可以放在多个列中).

我不知道从哪里开始得到我想要的东西.我一直在try 编写代码,所以我将4个置信度设置为组,然后使用groupby(),但我不确定要使用什么函数将收集到的基因放入正确的列中.

输入数据示例:

structure(list(`Gene Prioritization` = c("Medium High:CCNL2 C1orf170 PLEKHN1 RP11-54O7.17 HES4 | Low:AL645608.7 AL390719.1 WASH7P CPTP", 
"Medium High:CCNL2 ATAD3A C1orf222 CALML6 TMEM52 | Medium Low:GNB1  RER1 NADK | Low:AL109917.1", 
"Medium High:SKI PEX10 C1orf86 AL590822.1 RP11-181G12.4 RP11-181G12.5 | Medium Low:CALML6 TMEM52 CFAP74", 
"Medium High:TNFRSF14 PEX10 | Medium Low:RER1 | Low:AL391244.1", 
"Medium High:PRDM16 | High: ACE")), row.names = c(NA, -5L), class = c("data.table", 
"data.frame"))

推荐答案

这里有一个有tidyverse的选项

library(dplyr)
library(tidyr)
library(data.table)
df1 %>% 
  separate_rows(`Gene Prioritization`, sep = "\\s*\\|\\s*") %>% 
  separate( `Gene Prioritization` , into = c("Categ", "Genes"),
      sep = ":\\s*") %>%
  separate_rows(Genes, sep = " ") %>% 
 mutate(rn = rowid(Categ)) %>%
 pivot_wider(names_from = Categ, values_from = Genes) %>%
 select(-rn)

R相关问答推荐

在R中将特定列的值向右移动

try 将 colored颜色 编码添加到ggploly的标题中

比较理论阿尔法和经验阿尔法

仅在Facet_WRAP()中的相应方面包含geom_abline()

按多列统计频次

跨列查找多个时间报告

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

如何使用For-R循环在向量中找到一系列数字

WRS2包中带有bwtrim的简单ANOVA抛出错误

附加中缀操作符

将某个阈值以下的列中的值分类到不同的列中,否则保持该列的原样

动态统计函数在ShinyApp内部更改

从多行中 Select 最小值

有没有一种方法可以用非标准参数编写一个定制的ggploy主题函数?

按给定要求对向量进行排序

R+MICESS:我想编写一个函数,用于在补偿后从MICES MIDS对象中提取信息

如何将嵌入的情节设计为伪迷你图?

用于熵平衡的R包ebal:错误消息

迭代筛选器列表

R图不同 colored颜色 的回归线和散点图