2017-12-18 5 views
0

이 데이터 추출에 관한 질문. 데이터가있는 막 대형 차트를 만들고 싶지만 불행히도 R에서 숫자로 추출 된 문자를 변환 할 수 없습니다. 텍스트 편집기에서 파일을 편집하면 전혀 문제가 없지만 전체를 수행하고 싶습니다. 세 변수 모두 문자로 data.frame이R : R 데이터 프레임의 문자를 숫자로 변환

install.packages("rvest") 
    library(rvest) 

    url <- "https://en.wikipedia.org/wiki/Corporate_tax" 

    corporatetax <- url %>% 
    read_html() %>% 
    html_nodes(xpath='//*[@id="mw-content-text"]/div/table[5]') %>% 
    html_table() 

    str(corporatetax) 

corporatetax의 결과 : R.의 과정은 여기 코드입니다. 내가 해결할 수 없었던 나의 질문은 두 번째와 세 번째 열을 숫자로 변환하여 막대 차트를 만드는 방법은 무엇입니까? 나는 sapply()와 dplyr()로 시도했지만 올바른 방법을 찾지 못했습니다.

감사합니다.

+2

당신이 as.numeric 시도 해 봤나 같은 테이블을 정리하고 변환 할 컬럼의 각각에 적용하려고 할 수 있는가? 예 : df $ column_1 <- as.numeric (df $ column_1) –

+0

"%"와 같이 숫자가 아닌 문자를 먼저 제거해야합니다. 보통 – Nate

+0

에'gsub()'를 사용하고 현재는'corporatetax' data.frame이 아닌 목록입니다. data.frame을'corporatetax [[1]]'로 추출합니다. – Nate

답변

0

당신은

library(rvest) 
library(stringr) 
library(dplyr) 

url <- "https://en.wikipedia.org/wiki/Corporate_tax" 

corporatetax <- url %>% 
    read_html() %>% 
    # your xpath defines the single table, so you can use html_node() instead of html_nodes() 
    html_node(xpath='//*[@id="mw-content-text"]/div/table[5]') %>% 
    html_table() %>% as_tibble() %>% 
    setNames(c("country", "corporate_tax", "combined_tax")) 

corporatetax %>% 
    mutate(corporate_tax=as.numeric(str_replace(corporate_tax, "%", ""))/100, 
     combined_tax=as.numeric(str_replace(combined_tax, "%", ""))/100 
     )