使用重复行中的值

时间:2018-03-29 19:04:22

标签: r

我正在使用46216观察点,其中单位是家庭和人,每个家庭可能有任意数量的整合,如:

enter image description here 这对另外几乎18000个家庭来说。

我需要做的是获得每个家庭的教育年限,因为我想我需要一个计算每个家庭人数的变量。

我试图做的是:

num_peopl=by(df$person_number, df$home, max),对于每个家庭,我把最高人数与居住在那里的人数相比较,但是当我尝试用df来解决这个问题时,我得到了:

“参数意味着行数不同:46216,17931”

就像它只将一个人的数量放在一行,而将其他人留空。

我该怎么做?有功能吗?

1 个答案:

答案 0 :(得分:0)

我认为聚合和加入可能是你想要的。 Aggregate做的与你做的一样,但是把它放到一个我至少比较熟悉的数据框架中。

然后我使用了dplyr left_join,加入了家庭号码:

 library(tidyverse)
    df<-data.frame(home_number = c(1,1,1,2,2,3), 
person_number = c(1,2,3,1,2,1), 
age = c(20,21,1,54,50,30), 
sex = c("m","f","f","m","f","f"),
salary = c(1000,890,NA,900,500,1200), 
years_education = c(12,10,0,8,7,14))

    df2<-aggregate(df$person_number, by = list(df$home_number), max)

    df_final<-df%>%
      left_join(df2, by = c("home_number" = "Group.1"))

      home_number person_number age sex salary years_education x
    1           1             1  20   m   1000              12 3
    2           1             2  21   f    890              10 3
    3           1             3   1   f     NA               0 3
    4           2             1  54   m    900               8 2
    5           2             2  50   f    500               7 2
    6           3             1  30   f   1200              14 1