我有一个这样的数据框:
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
有一种简单的方法吗?
答案 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 = ";")})