简体   繁体   English

如何在 R 中使用 mutate_at() 更改列?

[英]How to use mutate_at() in R to change columns?

I want to replace all the instances of "" in the columns: VEHICLE.TYPE.CODE and CONTRIBUTING.FACTOR.VEHICLE .我想替换列中""的所有实例: VEHICLE.TYPE.CODECONTRIBUTING.FACTOR.VEHICLE

My code is:我的代码是:

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")) 

However, this doesn't work.但是,这不起作用。 The "" are not replaced by "NONE" . ""不会被替换为"NONE" Why does my code not work, and how can I fix my code to get "NONE" in my columns?为什么我的代码不起作用,如何修复我的代码以在我的列中获得"NONE"

Thanks in advance!提前致谢!

We can use matches to match column names with a pattern and use replace to change values.我们可以使用matches将列名与模式匹配,并使用replace来更改值。

library(dplyr)

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

Note that mutate_at is going to be replaced by across in future release of dplyr in which case syntax would change to:请注意, across mutate_at的未来版本中, dplyr将被替换为 cross,在这种情况下,语法将更改为:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM