合并命令如何在r中工作?

时间:2014-01-23 16:49:20

标签: r merge

我在R中有两个数据帧。第一个包含一些关于家庭的信息,另一个包含有关所有家庭孩子的信息 第一个像:(HHchar数据框)

HHchar <- read.table(text="ID familysize
1      4
2      5
3      2
4      3",header=T)

第二个喜欢:(儿童数据框)

children <- read.table(text="ID   age   gender birthorder
1     26     1    firstchild
1     20     2    secondchild
2     20     1    firstchild 
2     18     1    firstchild
2     17     2    secondchild
2     10     1    thirdchild
3     19     1    firstchild
3     12     2    secondchild
4     10     1    firstchild",header=T)

我希望这样做:

ID    age    gender     birthorder       familysize
1     26       1        firstchild           4
1     20       2        secondchild          4
2     20       1        firstchild           5
2     18       1        secondchild          5
2     17       2        thirdchild           5
3     19       1        firstchild           4
3     12       2        secondchild          4
4     10       1        firstchild           3

对于这个结果,我使用这个命令:

b2 <- merge (children ,HHchar,by="ID", all.x= TRUE)

我认为通过这个命令,所有关于在子数据框中报告的人的信息也将从HHchar数据框中提取出来并且将构建b2数据框。
但是发生了一些不好的事情,我发现b2中的行数不是我所期望的。

例如:

  • 在HHchar我们有4个家庭,所以有4行
  • 在儿童数据框中我们有9个孩子和9行
  • 在b2中我预计有9行,但它超过9

我通过小数据集测试此问题,但我的数据集非常大(853467行)。

所以我无法测试出了什么问题? 合并命令是否适合我的需要?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,这应该有效:

result <- merge(children, HHchar, by = "ID") 

一般来说,这些功能的作用如下: 合并(firstDF,secondDF,by.x = ColumnToJoinOnInFirstDF,by.y = ColumnToJoinOnInSecondDF)