R:将行与公共信息组合在一起

时间:2017-12-24 18:45:49

标签: r dataframe

我有一个这样的数据框:

V1 V2  V3    V4    V5  V6  V7 V8            V9
1  .  mRNA  1300  9000  .  +  .  ID=mRNA00003;Parent=gene00001;Name=EDEN.3
1  .  exon  1300  1500  .  +  .  ID=exon00001;Parent=mRNA00001
1  .  exon  1300  1500  .  +  .  ID=exon00001;Parent=mRNA00002
1  .  exon  1300  1500  .  +  .  ID=exon00001;Parent=mRNA00003

由于最后3行共享大部分相同的信息(即前8列相同),我想让它们像这样:

V1 V2  V3    V4    V5  V6  V7 V8            V9
1  .  mRNA  1300  9000  .  +  .  ID=mRNA00003;Parent=gene00001;Name=EDEN.3
1  .  exon  1300  1500  .  +  .  ID=exon00001;Parent=mRNA00001;mRNA00002;mRNA00003

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:2)

喜欢什么?

library(dplyr)
df %>%
  group_by(V1,V2,V3,V4,V5,V6,V7,V8) %>%
  summarise(V9 = paste(unique(unlist(strsplit(paste(V9, collapse = ';'), split = ";"))),collapse=";"))

答案 1 :(得分:1)

根据评论,您还可以尝试aggregate(V9 ~ ., df, function(x){paste(x, sep = ";")})