创建一个新列,该列提供与其他行有关的信息

时间:2019-06-05 18:43:18

标签: r

如何创建新列,以显示(1)每个人家庭中18岁以下的人口,以及(2)家庭中18岁以上的人口。

Example starting matrix

我曾尝试使用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"))

It should look something like this

1 个答案:

答案 0 :(得分:1)

一个简单的mutate应该可以解决问题:

df %>% group_by(FamilyID) %>%
  mutate(over18 = sum(age>18), under18 = sum(age<18))

请记住,它不算18岁的任何人。