假设我有一个标有A和B两列的文件。每列包含不同的字符串,允许重复。 A列已经排序。 这是一个例子:
A B
c1045 GO:0003735
c1045 GO:0005829
c1045 GO:0005840
c1045 GO:0006412
c1045 GO:0019843
c11467 GO:0003735
c11467 GO:0005840
c11467 GO:0006412
c1168 GO:0006950
c1168 GO:0006950
c1175 GO:0003674
c1175 GO:0003729
c1175 GO:0003735
c1175 GO:0006412
我想创建一个新文件,其中A列中的每个字符串只出现一次,并且在B列中连接相应的字符串。
生成的文件将以:
开头A B
c1045 GO:0003735,GO:0005829,GO:0005840,GO:0006412,GO:0019843.
c11467 GO:0003735,GO:0005840,GO:0006412.
在R中有一种简单的方法吗?
答案 0 :(得分:3)
这是你在找什么?
library(data.table)
dt <- data.table(df)
##
R> dt[,lapply(.SD,function(x) {
paste0(x,collapse=",")
}),by=A]
A B
1: c1045 GO:0003735,GO:0005829,GO:0005840,GO:0006412,GO:0019843
2: c11467 GO:0003735,GO:0005840,GO:0006412
3: c1168 GO:0006950,GO:0006950
4: c1175 GO:0003674,GO:0003729,GO:0003735,GO:0006412
数据:
df <- read.table(
text="A B
c1045 GO:0003735
c1045 GO:0005829
c1045 GO:0005840
c1045 GO:0006412
c1045 GO:0019843
c11467 GO:0003735
c11467 GO:0005840
c11467 GO:0006412
c1168 GO:0006950
c1168 GO:0006950
c1175 GO:0003674
c1175 GO:0003729
c1175 GO:0003735
c1175 GO:0006412",
header=TRUE,
stringsAsFactors=F)