梳理数据框,行没有正确排列

时间:2016-10-10 19:00:44

标签: r merge

我正在尝试合并2个数据框(19602000)。这些数据框的长度不同,但列名相同。我的第一次尝试是使用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列组成:NameGenderTotalTotal列表示具有特定名称的年份中的人数。 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性别在同一条线上显示。我可以在数据框输出中对它们进行操作,以便它们排成一行,但如果你知道我的意思,我宁愿用代码正确地生成它?

1 个答案:

答案 0 :(得分:0)

结束问题并供将来参考:

m <- merge(yob1960, yob2000, by = c("Name", "Gender" ), all = TRUE)

这将使这两年的名称和性别组合保持在同一行。