編輯:我明白以前問過合併多個數據幀的問題,但我被困在如何合併多個表而沒有先轉換爲數據幀,以便更簡潔。如果您想了解如何合併多個數據框,請參閱最佳答案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