【问题标题】:Change value of variable with dplyr用 dplyr 改变变量的值
【发布时间】:2015-03-16 19:44:03
【问题描述】:

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

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

我尝试使用 dplyr 执行此操作,但惨遭失败:

mtcars %>%
mutate(mpg = mpg == NA[cyl == 4]) %>%
as.data.frame()

我怎么能用dplyr 做到这一点?

【问题讨论】:

    标签: r dataframe plyr dplyr


    【解决方案1】:

    我们可以使用replace 将“mpg”中的值更改为与cyl==4 对应的NA

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

    【讨论】:

    • @iago 与replace,您需要将values 子集化,即replace(mpg, cyl == 4, qsec[cyl==4]),因为替换值正在选择整个列
    • @iago 我没有收到任何错误mtcars %&gt;% mutate(mpg=replace(mpg, cyl==4, qsec[cyl == 4]))。这可能是一个不同的场景。您是在比较单个值还是多个值?
    • 是的!我解决了一个问题:qsec[which(cyl==4)]。谢谢!我认为我的错误是由于我的 cyl 变量中缺少值。
    • @iago 是的,==NA 返回 NA 你可以使用 %in% 代替
    • ...使用 dplyr::across 您现在可以更新多个变量:mtcars %&gt;% mutate(across(c(mpg, cyl, disp), function(x) replace(x, cyl == 4, NA)))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多