使用dplyr更改变量的值

使用dplyr更改变量的值,r,dataframe,plyr,dplyr,R,Dataframe,Plyr,Dplyr,我经常需要根据不同变量的值更改变量的值,如下所示: mtcars$mpg[mtcars$cyl == 4] <- NA 如何使用dplyr?我们可以使用replace将'mpg'中的值更改为NA,对应于cyl==4 mtcars %>% mutate(mpg=replace(mpg, cyl==4, NA)) %>% as.data.frame() 如果在cyl==4给出的行中,我希望mpg的值是qsec的值,我会做mtcars%>%的变异(mpg=re

我经常需要根据不同变量的值更改变量的值,如下所示:

mtcars$mpg[mtcars$cyl == 4] <- NA

如何使用
dplyr
?我们可以使用
replace
将'mpg'中的值更改为
NA
,对应于
cyl==4

mtcars %>%
     mutate(mpg=replace(mpg, cyl==4, NA)) %>%
     as.data.frame()

如果在
cyl==4
给出的行中,我希望
mpg
的值是
qsec
的值,我会做
mtcars%>%的变异(mpg=replace(mpg,cyl==4,qsec))
,但我得到一个错误…@iago WIth
replace
,你也需要对
值进行子集化,即
replace(mpg,cyl==4,qsec[cyl==4])
当替换值选择整个column@iago我没有得到任何错误
mtcars%>%mutate(mpg=replace(mpg,cyl==4,qsec[cyl==4])
。这可能是另一种情况。您是比较单个值还是多个值?是的!,我用which:
qsec[which(cyl==4)]
求解。谢谢我假设我的错误是由于我的
cyl
变量中缺少值造成的。@iago Yes,
=
with
NA
返回
NA
您可以改为在%
中使用
%
mtcars %>%
     mutate(mpg=replace(mpg, cyl==4, NA)) %>%
     as.data.frame()