首页 > 解决方案 > 如何在 R 中使用 mutate_at() 来更改列?

问题描述

我想替换""列中的所有实例:VEHICLE.TYPE.CODECONTRIBUTING.FACTOR.VEHICLE

我的代码是:

df %>% 
  select(VEHICLE.TYPE.CODE.1, VEHICLE.TYPE.CODE.2, 
         VEHICLE.TYPE.CODE.3, VEHICLE.TYPE.CODE.4, VEHICLE.TYPE.CODE.5, 
         CONTRIBUTING.FACTOR.VEHICLE.1, CONTRIBUTING.FACTOR.VEHICLE.2, 
         CONTRIBUTING.FACTOR.VEHICLE.3, CONTRIBUTING.FACTOR.VEHICLE.4, 
         CONTRIBUTING.FACTOR.VEHICLE.5) %>%
  mutate_at(vars(contains(" ")), funs("NONE")) 

但是,这不起作用。""不替换为"NONE"。为什么我的代码不起作用,如何修复我的代码以进入"NONE"我的列?

提前致谢!

标签: rdplyr

解决方案


我们可以使用matches将列名与模式匹配并用于replace更改值。

library(dplyr)

df %>% mutate_at(vars(matches('VEHICLE.TYPE.CODE|CONTRIBUTING.FACTOR.VEHICLE')), 
                     ~replace(., . == "", "NONE"))

请注意,在将来的版本中将mutate_at替换为,在这种情况下,语法将更改为:acrossdplyr

df %>%
    mutate(across(matches('VEHICLE.TYPE.CODE|CONTRIBUTING.FACTOR.VEHICLE')),
           ~replace(., . == "", "NONE"))

推荐阅读