目的是通过忽视子女的教育水平,使家庭中的两个伴侣之间获得最高的教育价值。第一列hhid是家庭编号id,第二列是个人id。第三栏relation指的是家庭中个体之间的关系:1指户主,2指伴侣,3指子女。第四栏提到这些人的教育水平。
第五列是我希望得到的使用代码的列。其目的是只注重家庭内最高的教育水平,而只注重父母之间的教育水平。我通常使用pmax获得两列之间的最高值,使用group_by将个人聚集在一个组下,比如一个家庭,但这两个命令在这种情况下似乎行不通。有人能帮忙吗?
hhid id relation education highest_education
1 1 1 3 3
1 2 2 2 3
1 3 3 5 3
2 4 1 4 4
2 5 2 2 4
3 6 1 1 2
3 7 2 2 2
4 8 1 1 3
4 9 2 3 3
4 10 3 4 3以下是数据:
structure(list(hhid = c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4), id = c(1,
2, 3, 4, 5, 6, 7, 8, 9, 10), relation = c(1, 2, 3, 1, 2, 1, 2,
1, 2, 3), education = c(3, 2, 5, 4, 2, 1, 2, 1, 3, 4)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))发布于 2022-01-31 09:26:26
你可以这样做:
library(dplyr)
df %>%
group_by(hhid) %>%
mutate(highest_education = max(education[relation %in% c(1, 2)])) %>%
ungroup()
#> # A tibble: 10 × 5
#> hhid id relation education highest_education
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1 1 3 3
#> 2 1 2 2 2 3
#> 3 1 3 3 5 3
#> 4 2 4 1 4 4
#> 5 2 5 2 2 4
#> 6 3 6 1 1 2
#> 7 3 7 2 2 2
#> 8 4 8 1 1 3
#> 9 4 9 2 3 3
#> 10 4 10 3 4 3https://stackoverflow.com/questions/70923579
复制相似问题