我经常需要根据另一个变量的值更改一个变量的值,如下所示:
mtcars$mpg[mtcars$cyl == 4] <- NA
我试着用dplyr来做这个,但是失败得很惨:
dplyr
mtcars %>% mutate(mpg = mpg == NA[cyl == 4]) %>% as.data.frame()
我怎么能用dplyr做到这一点呢?
sf6xfgos1#
我们可以使用replace将'mpg'中的值更改为对应于cyl==4的NA。
replace
cyl==4
NA
mtcars %>% mutate(mpg=replace(mpg, cyl==4, NA)) %>% as.data.frame()
krugob8w2#
下面是使用简单ifelse的另一个选项:
ifelse
library(dplyr) mtcars %>% mutate(mpg = ifelse(cyl == 4, NA, mpg))
输出头:
#> mpg cyl disp hp drat wt qsec vs am gear carb #> Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 #> Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 #> Datsun 710 NA 4 108.0 93 3.85 2.320 18.61 1 1 4 1 #> Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 #> Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
另一个选项可以是使用case_when,其可以被扩展到更多条件:
case_when
mtcars %>% mutate(mpg = case_when(cyl == 4 ~ NA, TRUE ~ mpg))
2条答案
按热度按时间sf6xfgos1#
我们可以使用
replace
将'mpg'中的值更改为对应于cyl==4
的NA
。krugob8w2#
下面是使用简单
ifelse
的另一个选项:输出头:
另一个选项可以是使用
case_when
,其可以被扩展到更多条件: