2016-09-01 3 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 및 열 선택 도우미 기능을 사용하려면

+0

을 내가 좋아하는 뭔가를 찾고 있었다 주로하기 때문에' dec' a la read.csv. 하지만 필자는 도움말 파일을 자세히 읽어야합니다. –

13

, 그들은 ?mutate_at에서 살펴보고, 제대로 작동하려면 vars 기능에 싸여되어야한다 :

presupuesto_2016 %>% 
    mutate_at(vars(starts_with("monto_")), 
    #   ^^^ 
      str_replace, pattern = ",", replacement = "\\.") %>% 
    mutate_at(vars(starts_with("monto_")), funs(as.numeric)) 
    #   ^^^ 
관련 문제