2016-09-01 8 views
2

dplyrを使用してデータセットを整理しようとしています。私が変更したい列には実際にはダブルですが、小数点の代わりにカンマで区切られた文字列があります。今のところ私はこれを持っています:mutate_atを使用して複数の列タイプを変更する

presupuesto_2016 <- read_csv("http://datos.gob.ar/dataset/89f1a2dd-ad79-4211-87b4-44661d81ac0d/resource/84e23782-7d52-4724-a4ba-2f9621fa5f4e/download/presupuesto-2016.csv") 

names(presupuesto_2016) <- str_replace(names(presupuesto_2016), "\uFEFF", "") 

presupuesto_2016 %>% 
    mutate_at(starts_with("monto_"), 
      str_replace, pattern = ",", replacement = "\\.") %>% 
    mutate_at(starts_with("monto_"), funs(as.numeric)) 

しかし、これはすべての列を数値に変更します。私はここで間違って何をしていますか?

答えて

6

理由だけでない。

URL <- "http://datos.gob.ar/dataset/89f1a2dd-ad79-4211-87b4-44661d81ac0d/resource/84e23782-7d52-4724-a4ba-2f9621fa5f4e/download/presupuesto-2016.csv" 
presupuesto_2016 <- read_csv(URL, locale=locale(decimal_mark=",")) 

また、私はやってお勧めしたい:

fil <- basename(URL) 
if (!file.exists(fil)) download.file(URL, fil) 
presupuesto_2016 <- read_csv(fil, locale=locale(decimal_mark=",")) 

、あなたとそのサイトの帯域幅を節約今後の処理をスピードアップし、イベントで再現性を保証するために、そのサイトはオフラインになるか、そうします。あなたはmutate_atと列選択ヘルパー関数を使用したい場合は、彼らが正常に動作しvars機能に包まれなければなら

+0

私は 'のようなものを探していた主な理由dec 'a la read.csv。しかし、私は、ヘルプファイルをよく読んでおくべきだと思う。 –

13

?mutate_atを見てみましょう:

presupuesto_2016 %>% 
    mutate_at(vars(starts_with("monto_")), 
    #   ^^^ 
      str_replace, pattern = ",", replacement = "\\.") %>% 
    mutate_at(vars(starts_with("monto_")), funs(as.numeric)) 
    #   ^^^ 
関連する問題