首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dplyr mutate_at和case_when

dplyr mutate_at和case_when
EN

Stack Overflow用户
提问于 2018-04-01 04:30:32
回答 1查看 5.2K关注 0票数 7

我想用starts_with()来识别变量,然后执行case_when突变。

例如,假设我想做相当于:

代码语言:javascript
复制
mtcars$mpg[mtcars$mpg == 21.0] <- 5; mtcars

我的尝试:

代码语言:javascript
复制
mtcars %>%
  mutate_at(
    vars(starts_with("mpg")),
    funs(. = case_when(
      . == 21.0 ~ 5,
      TRUE ~ .
    ))
  )

我做错了什么?dplyr文档似乎没有多个mutate_at/mutate_each的例子(这条线似乎有相同的抱怨),所以我很难使用这些函数。也许我找错地方了?

我知道这条线,但在那里找不到解决方案。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-01 04:39:30

funs创建了一个函数列表,当您执行funs(. = ...)时,它会创建名为.的命名函数,这将导致生成新列,如果您只有一个列,则生成名称为.的新列;如果要更改多个列,则生成带有.后缀的名称;如果需要覆盖原始列,只需将匿名函数直接传递给funs,就可以保留未命名的函数。在您的例子中,删除. =中的funs应该是有效的;

代码语言:javascript
复制
mtcars %>%
  mutate_at(
    vars(starts_with("mpg")),
    funs(case_when(
      . == 21.0 ~ 5,
      TRUE ~ .
    ))
  )
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49594820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档