2017-11-01 3 views
0

일주일 전에 R을 시작했으며 시작하기 위해 html에서 정보를 추출하고 있습니다.패턴이 명확하지 않을 때 R에서 하위 문자열 추출

나는 이것이 다른 상황에서 이미 물어 봤고 자주 쓰레드를 읽었 기 때문에 빈번하고 기본적인 질문이라고 생각한다.

나는 또한 사용할 수있는 기능을 알고 : 서브/str_match 등

나는 서브()를 사용하기로 결정했습니다 여기 내 코드는 당분간 모습입니다 :

#libraries 
library('xml2') 
library('rvest') 
library('stringr') 

#author page: 
url <- paste('https://ideas.repec.org/e/',sample[4,3],'.html',sep="") 
url <- gsub(" ", "", url, fixed = TRUE) 
webpage <- read_html(url) 

#get all published articles: 
list_articles <- html_text(html_nodes(webpage,'#articles-body ol > li')) 

#get titles: 
titles <- html_text(html_nodes(webpage, '#articles-body b a')) 

#get co-authors: 
authors <- sub(".* ([A-Za-z_]+),([0-9]+).\n.*","\\1", list_articles) 

다음과 같은 list_articles의 요소가 모습입니다 :

" Theo Sparreboom & Lubna Shahnaz, 2007.\n\"Assessing Labour Market 
Vulnerability among Young People,\"\nThe Pakistan Development 
Review,\nPakistan Institute of Development Economics, vol. 46(3), pages 193- 
213.\n" 

나는 공동 저자를 얻으려고, R은 나에게 대신 공동 저자의 전체 문자열을 제공합니다, 그래서 나는 분명히 패턴 INCO를 지정하고 있습니다 바르게,하지만 나는 이유를 모르겠다.

누군가 나를 도울 수 있다면 좋을 것입니다.

는, G. 고티에

+0

예제 코드를 제공하면 사용하는 패키지를 지정하는 것이 좋습니다. 예를 들어'read_html'은베이스 R의 일부가 아닙니다. – G5W

+0

라이브러리를 추가했습니다. 귀하의 의견을 주셔서 감사합니다, 아직 할 일을 배워야 해. –

답변

1

이 도움이 좋은 날인가가 희망?

쉼표, 공백 및 숫자가있을 때까지 첫 번째 대문자에서 문자열을 추출합니다.

library(stringr) 

#get co-authors: 
authors <- str_extract(list_articles,"[[:upper:]].*(?=, [[:digit:]])") 
+0

당신은 그것을 못 박았습니다. 고맙습니다 ! –