我正在尝试合并2个数据框(1960
和2000
)。这些数据框的长度不同,但列名相同。我的第一次尝试是使用plyr
包并根据列名绑定:
library(plyr)
combined <- rbind.fill(1960[c("Name","Gender","1960")],2000[c("Name","Gender","2000")])
这很好,但我注意到它没有正确合并行。数据框中的数据样本显示,1960年出生的第一排没有女性称为亚伦,但第三行显示有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性别在同一条线上显示。我可以在数据框输出中对它们进行操作,以便它们排成一行,但如果你知道我的意思,我宁愿用代码正确地生成它?
答案 0 :(得分:0)
结束问题并供将来参考:
m <- merge(yob1960, yob2000, by = c("Name", "Gender" ), all = TRUE)
这将使这两年的名称和性别组合保持在同一行。