2016-06-03 5 views
2

gster를 사용하여 asterix 및 일부 공백 같은 기호를 제거 할 수 없습니다.HTML 데이터 정리 R

library(rvest) 
library(plyr) 
url = "http://www.statcan.gc.ca/pub/11-626-x/2016056/tbl/tbl01-eng.htm" 
page = read_html(url) 
df.list = page %>% 
    html_nodes(".table-responsive") %>% 
    html_nodes("table") %>% 
    html_table(fill=TRUE) 
str(df.list) 
df = df.list[[1]] 
df = df[,-1] 
df[,2] = gsub("Note","", df[,2]) 
df[,2] = gsub("*","", df[,2]) 
+0

'고정 = TRUE'을 사용하십시오. 또한 더 빠릅니다. –

답변

0

아스테릭스 그렙에서 특수 문자, 그래서 당신은 그것을하기 전에 두 개의 백 슬래시를 배치해야 -이 : 다음 코드를 확인하시기 바랍니다. 예 :

gsub("\\*","", df[,2]) 

당신은 또한 공백 제거하려면이를 사용

gsub("[[:blank:]|\\*]","", df[,2]) 
+0

위의 코드로 공백을 제거하려고했지만 '?' 대신. – PiyushGulati

+0

더 많은 정보를 제공해 주시면 제게 도움이됩니다 : http://prntscr.com/bc1z3t – simch

+0

숫자가 모두 올라간 후에 나타나는 'A'기호를 없애려면 어떻게합니까? – PiyushGulati

1

그것은 매우 간단합니다 :

library(rvest) 
library(dplyr) 

URL <- "http://www.statcan.gc.ca/pub/11-626-x/2016056/tbl/tbl01-eng.htm" 
pg <- read_html(URL) 

pg %>% 
    html_nodes(".table-responsive") %>% 
    html_nodes("table") %>% 
    html_table(fill=TRUE) -> df 

상단과 하단에이 GET 년대 cruft에의 제거, 그런 다음 saner 열 이름을 만듭니다.

df <- setNames(df[[1]][-c(1:2,154),], c("cip_code", "field_of_study", 
             "college_men", "college_women", 
             "bachelors_men", "bachelors_women", 
             "masters_men", "masters_women")) 

우리는 두 번째에서 이것을 사용할 것이다, 그러나 그것은 문자 벡터에서 수 있지만 모든 것을 제거합니다

make_numeric <- function(x) { as.numeric(gsub("[^0-9]", "", x)) } 

지금, 우리는 실행 각 열 이상 (처음 두 제외).

df <- mutate_each(df, funs(make_numeric), -cip_code, -field_of_study) 

붐. 끝난.

glimpse(df) 

## Observations: 151 
## Variables: 8 
## $ cip_code  (chr) "1.00", "1.03", "1.06", "3.01", "3.02", "3.05", "3.06", "4.02", "4.03", "4.09", "5.01", "9.01... 
## $ field_of_study (chr) "Agriculture, general", "Agricultural production operations", "Applied horticulture/horticult... 
## $ college_men  (dbl) 54095, 48329, 58948, 73514, 67374, 63693, 61992, NA, NA, 69677, NA, 67594, 59027, 64652, 5856... 
## $ college_women (dbl) NA, NA, 38855, NA, 60126, 47135, NA, NA, NA, 53502, NA, 53607, 55221, 57860, 51968, 46424, 53... 
## $ bachelors_men (dbl) 71610, NA, NA, 79448, NA, 72277, NA, 78738, 84319, NA, NA, 71466, 73217, NA, NA, NA, 80290, N... 
## $ bachelors_women (dbl) 59829, NA, NA, 65014, NA, NA, NA, 64290, 66414, NA, 56851, 61712, 67580, 64610, NA, NA, 63534... 
## $ masters_men  (dbl) NA, NA, NA, 86788, NA, NA, NA, 84446, 90274, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 9560... 
## $ masters_women (dbl) NA, NA, NA, 76566, NA, NA, NA, NA, 74163, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 77776, ...