我有一个数据框,其中包含有关家庭 ID、工作类型和家庭职位的信息(1 = 参考人,2 = 次要居民)。
c <- data.frame(HH_ID=c(1,2,3,1,2,3), WORK = c("Worker", "Manager", "Employee", "Employee", "Manager", "Craftsman"), NOI= c(1,1,1,2,2,2))
我想用每个家庭的参考人(NOI = 1)的工作创建一个新栏。基本上,我想要这个:
HH_ID Work NOI Reference Work
1 Worker 1 Worker
2 Manager 1 Manager
3 Employee 1 Employee
1 Employee 2 Worker
2 Manager 2 Manager
3 Craftsman 2 Employee
我尝试使用 mutate 和 use conditions (if) 但找不到正确的公式。我在想类似的事情:
df <- c %>% group_by(HH_ID) %>% mutate(NewVar = if(c$NOI == 2) {coalesce(lag(WORK), lead(WORK))} else {WORK})
```
Thanks for your help!
这里不需要任何
if
:
df |>
group_by(HH_ID) |>
mutate(Reference_Work = WORK[NOI == 1]) |>
ungroup()
# # A tibble: 6 × 4
# HH_ID WORK NOI Reference_Work
# <dbl> <chr> <dbl> <chr>
# 1 1 Worker 1 Worker
# 2 2 Manager 1 Manager
# 3 3 Employee 1 Employee
# 4 1 Employee 2 Worker
# 5 2 Manager 2 Manager
# 6 3 Craftsman 2 Employee