1
我對R相對較新,並試圖找出如何合併多個data.frames與不同數量的行,但都與一個共同的列,「年」。我已經看過類似的問題,並且這個問題: Merge dataframes, different lengths 提供了一個很好的答案。但是,當我將它應用於我自己的數據時,我無法使用它處理多個data.frames;我總是收到一條錯誤消息。在R中合併多個data.frames與不同的行長
的樣本數據:
> df1 <- data.frame(Year=2006:2011, Site1=c("2.3", "1" , "3.1", "2.9", "1.4", "3"))
> df2 <- data.frame(Year=2007:2011, Site2=c("2.7", "4.1", "1.1", "2.6", "3.1"))
> df3 <- data.frame(Year=2008:2011, Site3=c("1.3", "2" , "3.6", "1.7"))
的目標是產生一個data.frame其中列1年,第2列是站點1,第3列是站點2,依此類推。我目前有17個data.frames(最多有40個),對應於17個可變時間線/行數的站點。
任何幫助,將不勝感激。
代碼我已經試過:
> NewDF <- merge(df1, df2, by="Year", all.x=TRUE, all.y=TRUE)
這2個data.frames偉大的工作,但是當我試圖在另一個data.frame添加,我收到錯誤消息:
> NewDF <- merge(list=c(df1, df2, df3), by="Year", all.x=TRUE, all.y=TRUE)
Error in as.data.frame(x) : argument "x" is missing, with no default
感謝您的快速響應!我剛剛嘗試了兩種選擇,並有幾個問題。 1)對於選項1,是否有一種方法可以輕鬆運行17個data.frames的合併?它適用於3,但不確定將其應用於17的最有效方式。2)我嘗試了reduce函數,它對我的前3個數據幀非常合適。當我添加第四個時,我收到一條錯誤消息:'Reduce(function(x,y)merge(x,y,by =「Year」,all.x = TRUE,all.y = TRUE),list(Faye006WWmean, Faye006BWWmean,Faye007WWmean,Grin001WWmean)) Match.names(clabs,names(xi))中的錯誤:名稱與以前的名稱不匹配 – KKL234
@ user2296922 1)這就是第二種方法的作用2)第4個data.frame有些奇怪' - 嘗試將其中一個與其他任何一個合併,看看會發生什麼 – eddi
我只是嘗試重新排列列表中的data.frames,並且沒有問題。一定是我第一次輸入代碼的方式。謝謝您的幫助! – KKL234