web-dev-qa-db-ja.com

多くの列でdplyr + gsubを使用する

特殊文字を削除するためにdplyrgsubを使用しています。ベースRで持っていたコードを翻訳しようとしています。

これが私のデータに似た偽の例です:

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

comunas = cbind(region,provincia,comuna)

これは私にとってはうまくいきます:

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"

そして、他の必要な変更。

何か案が?よろしくお願いします!

8
pachamaltese

これは私にとってはうまくいきます:

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

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


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


comunas_casen_2015 %>%
  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
10
Pierre Lapointe