2017-03-20 21 views
0

구문 분석 된 텍스트에서 x보다 작은 수를 계산하고 싶습니다.구문 분석 된 텍스트 처리

이 나에게 목록주는 코드입니다 :

library(rvest) 
library(reshape2) 


td <- read_html(x = "http://www.imdb.com/name/nm1287124/?ref_=tt_ov_dr") 
list<- as.list(td %>% # feed `main.page` to the next step%>% # load the page 
    html_nodes(".filmo-row") %>% # isloate the text 
    html_text())  

이 사람이 계산하는 방법을 알고 있나요은, 예를 들어, 2017보다 작은 양의 숫자? ;

+0

사용중인 모든 패키지를 표시하십시오. – Roland

+0

rvest and reshape2 – nemja

답변

0

이의 우리가 있다고 가정 해 봅시다 (완전 최종 목표는 특정 년 전에 이사 크레딧의 양을 계산하는 것입니다) : 숫자를 가정

text <- "asdasd8927askdmasjdo89jans1982736djnaos987anksdjnj2008da" 

항상 [0-9] 아무것도하지만 둘러싸인되어, explanat에 대한

idx <- gregexpr("[0-9]+", text)[[1]] 
lens <- attr(idx, "match.length") 
nums <- lapply(seq_along(idx), function(i) { 
    substr(text, idx[i], idx[i] + lens[i] - 1) 
}) 
nums <- as.numeric(nums) 

(?grep?substr : 다음은이 작업을 수행 할 기능을 쓸 수있다 이온) 마지막으로보다 큰 2017

sum(nums > 2017) 


편집 (코멘트)

하는의 우리는 정확히 4 자리 숫자를보고 싶다고하자, 다음 정규식있는 숫자를 셀 수 (및 substr 지수)를 조정할 수 있습니다. 이제 우리는 "Not a Number"4 번 "a number" "Not a Number"를 검색합니다. 따라서 "번호"부분 만 추출하려면 substr 위치를 나중에 시작하고 한 위치 앞에서 중지하십시오.

idx <- gregexpr("[^0-9][0-9]{4}[^0-9]", text)[[1]] 
lens <- attr(idx, "match.length") 
nums <- lapply(seq_along(idx), function(i) { 
    substr(text, idx[i] + 1, idx[i] + lens[i] - 2) 
}) 
nums <- as.numeric(nums) 

이제 nums에는 2 개의 4 자리 숫자 만 포함됩니다.

nums 
sum(nums > 2017) 
+0

답해 주셔서 감사합니다. 그러나 내 데이터에는 적용되지 않습니다. (완료하기 만하면 특정 연도 전에 이사 크레딧을 계산하고 싶습니다. http://www.imdb.com/name/nm1287124/?ref_=tt_ov_dr) – nemja

+0

코드를 특정 문자열로 조정할 수 있습니다. . 4 자리 숫자 만보고 싶다면이 정규식을 사용할 수 있습니다 :'[^ 0-9] [0-9] {4} [^ 0-9]'. 그런 다음 정규식은 "NaN 네 번 NaN 숫자"패턴을 검색합니다. 그래서, 당신은'substr' 함수에서 시작과 멈춤 인덱스를 조절해야합니다. +1과 -1 :'substr (text, idx [i] + 1, idx [i] + lens [i] -2)' – mRcSchwering