在R data.table中对嵌入式组结构进行分组

时间:2016-09-06 22:28:19

标签: r dataframe data.table

我有一个data.table对象,如下所示:

FamilyID InterFamilyID MumInFamilyID Edu
1        1             NA            2
1        2             NA            5
1        3             2             3
2        1             NA            6
2        2             1             9
2        2             1             3

我想执行像这样的查询:

tbl1[, MumEdu:= Edu[InterFamilyID == MumInFamilyID], by=FamilyID]

得到这样的东西:

FamilyID InterFamilyID MumInFamilyID Edu MumEdu
1        1             NA            2   NA
1        2             NA            5   NA
1        3             2             3   5
2        1             NA            6   NA
2        2             1             9   6
2        2             1             3   6

实际上,我有一个按列(FamilyID)分组的data.table,这些组中的每一个都按另一列(InterFamilyID)分组。在另一列中,引用了另一个组成员的较小组ID。我想使用这些值来访问引用的行值。

1 个答案:

答案 0 :(得分:1)

您可以使用match

  

返回第二个参数中第一个参数(第一个)匹配位置的向量。

并使用结果位置找出Edu列中的相应元素:

tbl1[, MumEdu := Edu[match(MumInFamilyID, InterFamilyID)], by = FamilyID]
tbl1
#   FamilyID InterFamilyID MumInFamilyID Edu MumEdu
#1:        1             1            NA   2     NA
#2:        1             2            NA   5     NA
#3:        1             3             2   3      5
#4:        2             1            NA   6     NA
#5:        2             2             1   9      6
#6:        2             2             1   3      6