【发布时间】:2015-03-16 19:44:03
【问题描述】:
我经常需要根据不同变量的值更改变量的值,如下所示:
mtcars$mpg[mtcars$cyl == 4] <- NA
我尝试使用 dplyr 执行此操作,但惨遭失败:
mtcars %>%
mutate(mpg = mpg == NA[cyl == 4]) %>%
as.data.frame()
我怎么能用dplyr 做到这一点?
【问题讨论】:
我经常需要根据不同变量的值更改变量的值,如下所示:
mtcars$mpg[mtcars$cyl == 4] <- NA
我尝试使用 dplyr 执行此操作,但惨遭失败:
mtcars %>%
mutate(mpg = mpg == NA[cyl == 4]) %>%
as.data.frame()
我怎么能用dplyr 做到这一点?
【问题讨论】:
我们可以使用replace 将“mpg”中的值更改为与cyl==4 对应的NA。
mtcars %>%
mutate(mpg=replace(mpg, cyl==4, NA)) %>%
as.data.frame()
【讨论】:
replace,您需要将values 子集化,即replace(mpg, cyl == 4, qsec[cyl==4]),因为替换值正在选择整个列
mtcars %>% mutate(mpg=replace(mpg, cyl==4, qsec[cyl == 4]))。这可能是一个不同的场景。您是在比较单个值还是多个值?
qsec[which(cyl==4)]。谢谢!我认为我的错误是由于我的 cyl 变量中缺少值。
== 和 NA 返回 NA 你可以使用 %in% 代替
mtcars %>% mutate(across(c(mpg, cyl, disp), function(x) replace(x, cyl == 4, NA)))。