How to create use mutate with if statement and groupeby?

问题描述 投票:0回答:1

我有一个数据框,其中包含有关家庭 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!
r if-statement dplyr group-by mutate
1个回答
1
投票

这里不需要任何

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  
© www.soinside.com 2019 - 2024. All rights reserved.