我有一个关于househould id,性别和年龄的数据如下:
mydata <-
structure(list(ID_HH = c(1,1,1,1,2,2,3,3,3,4,5,5),
GENDER = c(1,2,1,1,1,2,2,1,2,2,1,1),
AGE = c(50,45,3,15,25,5,32,30,10,28,64,16)),
.Names = c("ID", "GENDER", "AGE"),
class = "data.frame", row.names = c(NA, -12L))
mydata
# HH_ID GENDER AGE
# 1 1 1 50
# 2 1 2 45
# 3 1 1 3
# 4 1 1 15
# 5 2 1 25
# 6 2 2 5
# 7 3 2 32
# 8 3 1 30
# 9 3 2 10
# 10 4 2 28
# 11 5 1 64
# 12 5 1 16
我有另一个数据帧,我们称之为'输出',它只有唯一的HH_ID值和旁边的其他一些列 . 我想要做的是向此数据框添加新列,显示:
-
"the number of adult females (Gender=2 && Age=18)",
-
"the number of adult males (Gender=1 && Age=18)",
-
"the number of school children (6-18)"(Num_Sch),和
-
"the number of preschpol children (0-6)"(Num_PreSch)
为每个家庭 . 所以'输出'应该是这样的:
# HH_ID Col1 Col2 ... Num_Fem Num_Male Num_PreSch Num_Sch
# 1 1 .. 1 1 1 1
# 2 2 .. 0 1 1 0
# 3 3 .. 1 1 0 1
# 4 4 .. 1 0 0 0
# 5 5 .. 0 1 0 1
我尝试了许多不同的功能和包,但没有什么能达到我想要的 . 我将不胜感激任何帮助或评论 .
2 回答
可能有一种奇特的方法,但您可以使用
for
循环来执行此操作,如下所示:它会给你你预期的结果:
希望能帮助到你 .
你已经在考虑这个问题的方式很好地转化为逻辑语句(例如,这个人是女性,18岁或以上),所以我用一系列逻辑向量来做,利用因为真/假翻译的事实到1/0,你可以总结它们 .
设置不同的类别并为每个类别创建逻辑列 .
然后,您可以按家庭分组并将所有类型的逻辑列相加 .
我将允许您处理的一个问题:函数
between
包含其 endpoints . 你太难了,因为看起来你正在使用年龄作为整数 .