【发布时间】:2015-11-20 02:17:02
【问题描述】:
我在 r 中有一个庞大的数据集,每个人一行。我的一个专栏显示了一个家庭标识符(注意,sex==1,男性,sex==2,女性)。
ind sex income hw family.id
1 1 10 6 fam.1
2 2 8 7 fam.1
3 2 15 8 fam.2
4 1 7 4 fam.3
5 2 9 5 fam.3
如何进行“双重匹配”,以便为我感兴趣的许多变量匹配数据集中的情侣?例如,假设个人 2,女性,与个人 1,男性结婚,应该在新列中收到他的收入条目(hw 也是如此):
ind sex income hw family.id income.male hw.male
1 1 10 6 fam.1 10 6
2 2 8 7 fam.1 8 6
3 2 15 8 fam.2 - -
4 1 7 4 fam.3 7 7
5 2 9 5 fam.3 9 7
我在标题中说了“双重匹配”,因为我不需要只匹配family.ID,但我需要找到一个匹配这个fam.id 的男性。我这样做的原因是因为以后所有男性都将从数据集中删除,我将只保留女性行。
很抱歉,我无法展示我编写过的任何代码。我尝试了许多使用 match 的方法,ifelse、lapply 甚至 unlist 但不值得在这里添加它,因为不幸的是我无法让它工作。
有人知道吗?我们可以使用data.frames 或data.tables 环境。
【问题讨论】:
-
在期望的结果中,为什么sex==2 的记录有
income.male和hw.male的数据? -
嗨@Parfait6,因为这正是我正在寻找的:我想将匹配相同family.id 的sex==1 结果添加到sex==2 的行中。现在清楚了吗?
-
我认为你应该使用
dcast(DT, family.id ~ factor(sex, labels=c("male","female")), value.var=c("income","hw")),但不会发布它,因为你想要的输出是别的东西。 (这里的DT必须是data.table...)
标签: r if-statement data.table lapply