【发布时间】:2018-04-02 23:17:55
【问题描述】:
如果变量采用 dplyr 中的三个值之一,我想将其重新编码为缺失。考虑以下数据框have:
id married hrs_workperwk
1 1 40
2 1 55
3 1 70
4 0 -1
5 1 99
6 0 -2
7 0 10
8 0 40
9 1 45
-1、-2 和 99 是非法值。新的数据框want 应如下所示:
id married hrs_workperwk
1 1 40
2 1 55
3 1 70
4 0 NA
5 1 NA
6 0 NA
7 0 10
8 0 40
9 1 45
我可以使用 base R 来快速解决这个问题,但是当我已经在使用 mutate() 时,dplyr 通常很方便。唉,这意味着我目前使用多个嵌套的 if_else() 函数:
want <- mutate(have,
hrs_workperwk = if_else(hrs_workperwk < 0, as.numeric(NA),
if_else(hrs_workperwk = 99, as.numeric(NA), hrs_workperwk)))
有没有办法只用一个 if_else() 函数来做到这一点?理想情况下是这样的:
want <- mutate(have,
hrs_workperwk = if_else(hrs_workperwk = c(-2, -1, 99), as.numeric(NA), hrs_workperwk))
【问题讨论】: