在许多列上使用 dplyr + gsub

问题描述 投票:0回答:1

我使用

dplyr
gsub
来删除特殊字符。我正在尝试翻译我使用基本 R 编写的代码。

这是一个类似于我的数据的假示例:

region = c("regi\xf3n de tarapac\xe1","regi\xf3n de tarapac\xe1")
provincia = c("cami\xf1a","iquique")
comuna = c("tamarugal","alto hospicio")

comunas = data.frame(region,provincia,comuna)

这对我有用:

library(dplyr)

comunas = comunas %>% 
  mutate(comuna = gsub("\xe1", "\u00e1", comuna), # a with acute
         comuna = gsub("<e1>", "\u00e1", comuna) # a with acute
  )

但现在我想对每一列应用相同的方法:

comunas = comunas %>% 
  mutate_all(funs(gsub("\xe1", "\u00e1", .), # a with acute
         gsub("<e1>", "\u00e1", .) # a with acute
  ))

我看到最后一块没有效果。这个想法是为了获得:

     region                     provincia   comuna         
[1,] "regi\xf3n de tarapacá" "cami\xf1a" "tamarugal"    
[2,] "regi\xf3n de tarapacá" "iquique"   "alto hospicio"

以及任何其他需要的更改。

有什么想法吗?非常感谢!

r dplyr gsub
1个回答
29
投票

2021更新

mutate_all
现已替换为
across
。以下是在
gsub
的帮助下在多列中使用
dplyr
的两种方法:

library(dplyr)

#data
region = c("regi\xf3n de tarapac\xe1","regi\xf3n de tarapac\xe1")
provincia = c("cami\xf1a","iquique")
comuna = c("tamarugal","alto hospicio")

comunas = data.frame(region,provincia,comuna,stringsAsFactors=FALSE)

#Without anonymous function
comunas %>%
  mutate(across(everything(), gsub, pattern = "\xe1|<e1>", replacement = "\u00e1"))

#With anonymous function
comunas %>%
  mutate(across(everything(),~ gsub("\xe1|<e1>","\u00e1", .)))

              region provincia        comuna
1 región de tarapacá    camiña     tamarugal
2 región de tarapacá   iquique alto hospicio

原答案

这对我有用:

region = c("regi\xf3n de tarapac\xe1","regi\xf3n de tarapac\xe1")
provincia = c("cami\xf1a","iquique")
comuna = c("tamarugal","alto hospicio")

comunas = data.frame(region,provincia,comuna,stringsAsFactors=FALSE)


comunas %>%
  mutate(region = gsub("\xe1", "\u00e1", region), # a with acute
         region = gsub("<e1>", "\u00e1", region) # a with acute
  )
  
  
comunas %>%
  mutate_all(funs(gsub("\xe1", "\u00e1", .), # a with acute
         gsub("<e1>", "\u00e1", .) # a with acute
  ))

              region provincia        comuna        region_gsub provincia_gsub   comuna_gsub
1 región de tarapacá    camiña     tamarugal región de tarapacá         camiña     tamarugal
2 región de tarapacá   iquique alto hospicio región de tarapacá        iquique alto hospicio
© www.soinside.com 2019 - 2024. All rights reserved.