我試圖結合2個數據幀(1960
和2000
)。這些數據幀長度不同,但列名相同。我第一次嘗試是使用plyr
包和綁定基於列名:梳理數據幀,行沒有正確排隊
library(plyr)
combined <- rbind.fill(1960[c("Name","Gender","1960")],2000[c("Name","Gender","2000")])
這是不錯,但我注意到,這是不正確的合併行。該數據在數據幀的樣本顯示,有沒有女性叫亞倫出生於1960年的第一行上,但第3行顯示有20
Name Gender 1960 2000
Aaron F NA 35 29613
Aaron M NA 9548 2728
Aaron F 20 NA 7511
Aaron M 1772 NA
我又試圖smartbind
但得到了同樣的結果:
library(gtools)
t <- smartbind(1960, 2000)
我不知道如何獲得女性和男性的條目對應。我也嘗試合併數據幀,但我不太喜歡輸出。
m <- merge(1960, 2000, by = c("Name"), all = TRUE)
m[is.na(m)] <- 0
如果任何人可以建議如何根據名稱和性別讓行正確排隊,我真的很感激。
編輯: 這兩個數據幀由3米欄:Name
,Gender
和Total
。 Total
列表示具有特定名稱的年份中的人數。 1960年的數據框顯示了該年的總名稱,2000年的數據框顯示了該年的總數。當我合併2數據幀輸出爲:
Name Gender.x 1960 Gender.y 2000
Aaron F 20 F 35
Aaron F 20 M 9548
Aaron M 1772 F 35
Aaron M 1772 M 9548
我不喜歡他們的合併是什麼使M和F男女都出現在同一行。我可以在數據幀輸出中操作它們,以便它們排隊,但如果你知道我的意思,我寧願用代碼正確地生成它。
你能舉出1960年和2000年數據框架的例子嗎?你的預期產出究竟是什麼?如果目標是爲1960年和2000年的名稱計數創建一個包含單獨列的數據框,那麼「合併」就是要走的路。你不喜歡什麼結果? – jdobres
這裏的問題似乎是,您沒有可以合併的觀察值的唯一標識符。如果您只按名稱合併,並且多個人具有相同的名稱,則merge命令無法知道誰是同一個人。您可以嘗試通過使用'paste0'命令組合多個列來創建唯一標識符。 –
謝謝jdobres,Daniel Winkler和Scarabee的幫助。我剛剛開始與R,並仍然試圖讓我的頭。我編輯了我的原始帖子,提供更多信息。我會嘗試唯一標識符路由,看看如何解決。謝謝! – Karen