编辑:我明白以前问过合并多个数据帧的问题,但我被困在如何合并多个表而没有先转换为数据帧,以便更简洁。如果您想了解如何合并多个数据框,请参阅最佳答案here(也链接如下)。在R中合并多个表
所以我有一种方法可以在R中合并多个数据帧,但我希望有人可以帮助我找到更优雅的方式。这里是我有这个代码的例子。鉴于DF1,DF2和DF3都具有相同的列(包括列名“阶级”),但不同的行数的数据帧,我可以这样做:
table1 <- table(df1$class)
table2 <- table(df2$class)
table3 <- table(df3$class)
和this答案给出的,然后我就可以合并其中:
merged.table <- Reduce(function(...) merge(..., all=T), list(table1, table2, table3))
我的问题是,合并不正确,因为对象表1,表2,表3和具有相同的识别名称和merged.table最终的数据合并到一列。
我的解决方法是将表转换为数据帧,因为这样的:
table1 <- as.data.frame(table(df1$class))
colnames(table1) <- c("ID","counts1")
table2 <- as.data.frame(table(df2$class))
colnames(table2) <- c("ID","counts2")
table3 <- as.data.frame(table(df3$class))
colnames(table3) <- c("ID","counts3")
然后合并工作得很好。但让我告诉你,一段时间后,这会变得非常笨重乏味,我需要做很多事情。
有什么办法可以实现相同的目标,而无需将表格转换为数据框和分配列名称?
这里是什么样的数据帧的样子,截断简单的例子:
transcript <- rep(c("a","b","c","d","e","f"))
family <- rep(c("L1","L2","ERV"),2)
class <- rep(c("LINE","LINE","LTR"),2)
df1 <- data.frame(transcript, family, class)
transcript family class
a L1 LINE
b L2 LINE
c ERV LTR
d L1 LINE
e L2 LINE
f ERV LTR
太好了! 'by =“Var1”技巧效果很好。你可以把它作为答案,让我可以接受它吗? – lmrta