用R对非数值数据集进行叠加
我有一个需要堆叠的GO术语的data.frame。 df看起来像:用R对非数值数据集进行叠加,r,stack,R,Stack,我有一个需要堆叠的GO术语的data.frame。 df看起来像: > head(GO_info) V2 Gene1 GO:0003674,GO:0005215,GO:0005216,GO:0005575 Gene2 GO:0000462,GO:0002181,GO:0003674,GO:0003735 但我希望这个数据帧堆叠起来,包括标题“ind”和“value”,如: 我尝试使用: GO_info2 <- stack(GO_info) GO_info2 数据 d
> head(GO_info)
V2
Gene1 GO:0003674,GO:0005215,GO:0005216,GO:0005575
Gene2 GO:0000462,GO:0002181,GO:0003674,GO:0003735
但我希望这个数据帧堆叠起来,包括标题“ind”和“value”,如:
我尝试使用:
GO_info2 <- stack(GO_info)
GO_info2
数据
dft感谢您的评论,但它似乎还不起作用。我试着实现它:GOterm%separate(V2,into=c('ind','values'),sep='\\s')%%>%GOterm=new stacked datafile和GO_info我的旧df和1000个基因ID。我得到以下警告:警告消息:预计2件。在24140行[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,…]中填入
NA`的缺失片段。它只是将我的基因名(如“TRINITY_DN100009_c0_g1”)替换为值1,2,3,4。我在>中看到(GO_info)是一个小错误。列1有一个名为V1的标题,所以它看起来像:V1 V2 Gene1 GO:0003674,GO:0005215,GO:0005216,GO:0005575 Gene2 GO:000462,GO:0002181,GO:0003674,GO:0003735,因为a的代码不起作用。Suliman现在我按如下方式尝试:GOterm如果有两列V1和V2,那么您可以执行df%>%分隔的行(V2,sep=,'))
。然后使用colnames(df)更改列名称
GO_info2 <- stack(GO_info)
library(tidyr)
df %>% separate(V2,into = c('ind','values'),sep = '\\s') %>% #separate V2 to inds and values at space \\s
separate_rows(values,sep = ',') #separate values to multiple rows at ','
ind values
1 Gene1 GO:0003674
2 Gene1 GO:0005215
3 Gene1 GO:0005216
4 Gene1 GO:0005575
5 Gene2 GO:0000462
6 Gene2 GO:0002181
7 Gene2 GO:0003674
8 Gene2 GO:0003735
df<-read.table(text="
V2
'Gene1 GO:0003674,GO:0005215,GO:0005216,GO:0005575'
'Gene2 GO:0000462,GO:0002181,GO:0003674,GO:0003735'
",header=TRUE)