如何创建新列,以显示(1)每个人家庭中18岁以下的人口,以及(2)家庭中18岁以上的人口。
我曾尝试使用dplyr spread命令,但经过了几次循环,但无济于事。
示例数据框的代码:
df<- data.frame(FamilyID=c(100,100,100,101,101,102,103,103),
name=c("Jason", "Masha", "Eamonn", "Leslie", "Dominic", "Carie",
"William", "Stacy"),
age=c(14,23,45,6,54,2,58,78),
sex=c("m","f","m","f","m","f","m","f"))
答案 0 :(得分:1)
一个简单的mutate
应该可以解决问题:
df %>% group_by(FamilyID) %>%
mutate(over18 = sum(age>18), under18 = sum(age<18))
请记住,它不算18岁的任何人。