【发布时间】:2018-10-17 11:10:33
【问题描述】:
我有一个这种形式的数据框
familyid Year memberid value
1 2000 1 5
1 2000 2 6
2 2000 1 5
3 2000 1 7
3 2000 2 8
1 2002 1 5
1 2002 2 5
2 2002 1 6
3 2002 1 7
3 2002 2 8
我想按如下方式改造
familyid Year value_1 value_2
1 2000 5 6
2 2000 5 NA
3 2000 7 8
1 2002 5 5
2 2002 6 NA
3 2002 7 8
换句话说,我想按 familyid 和 year 对我的 obs 进行分组,然后为每个 memberid 创建一个列,报告最后一列的相应值。每当该家庭只有一个成员时,我希望在与参考家庭的成员 2 关联的 value_2 列中有 NA 。
为此,我通常成功地使用以下代码
setDT(df)
dfnew<-data.table::dcast(df, Year + familyid ~ memberid, value.var=c("value"))
不幸的是这次我得到了这样的东西
familyid Year value_1 value_2
1 2000 1 1
2 2000 1 0
3 2000 1 1
1 2002 1 1
2 2002 1 0
3 2002 1 1
换句话说,只要成员存在,我就会得到一个带有 1 的新数据框(实际上列 value_1 包含所有 1,因为所有家庭都至少有一个成员),只要成员不存在,就得到 0,而不管列“值”中的实际值”。有人知道为什么会这样吗?感谢您的宝贵时间。
【问题讨论】:
-
我无法用你的例子重现这一点。我得到你想要的结果。我怀疑在您的实际数据中存在不唯一的 ID 组合。
-
哦,我明白了。这可能是问题所在。非常感谢!
标签: r