2014-12-22 5 views
2

하나의 열에 미국 주 및 카운티 이름이 들어있는 r 데이터 프레임이 있습니다. 데이터 형식은 다음과 같습니다.r 데이터 프레임에서 부분 텍스트 분리

United States - State name - County name 

각 셀은 고유 한 카운티입니다. 예를 들면 다음과 같습니다.

열을 2 개의 열로 나누어야합니다. 하나는 주 이름 만 포함하고 다른 하나는 카운티 이름 만 포함해야합니다. 나는 sub와 gsub로 실험했지만 아무런 결과도 얻지 못하고있다. 나는 이것이 아마도 R 전문가에게는 간단한 문제이지만 나는 초보자라는 것을 이해한다. 나는 누군가가 올바른 방향으로 나를 가리킬 수 있다면 가장 감사 할 것입니다. 데이터 인 경우는 (국가로 미국을 포함한) 및 데이터 프레임 (DF)이라고하며, 현재 열이있는 경우 귀하의 질문에 표시로

library(tidyr) 
df <- separate(df, currentColumn, into = c("Country", "State", "County"), sep = " - ") 

:

답변

3

당신은 tidyrseparate 기능을 사용할 수 있습니다 데이터를 currentColumn이라고합니다.

예 : 속도가 문제가되는 경우

df <- data.frame(currentColumn = c("United States - North Carolina - Wake County", 
"United States - North Carolina - Warren County"), val = rnorm(2)) 

df 
#         currentColumn  val 
#1 United States - North Carolina - Wake County 0.8173619 
#2 United States - North Carolina - Warren County 0.4941976 

separate(df, currentColumn, into = c("Country", "State", "County"), sep = " - ") 
#  Country   State  County  val 
#1 United States North Carolina Wake County 0.8173619 
#2 United States North Carolina Warren County 0.4941976 
+0

나는'strsplit'을 사용하여 답변을 게시하려했으나 이제는 'tidyr'을 사용하기 시작할 것입니다. 나는 지금까지 '확산'과 '모으기'에 대한 인상적인 예를 보았다. – shadowtalker

+0

@docendodiscimus 다시 한번 말하지만,'tidyr', 환호를 사용하여 가장 빠른 답변을 제공하는 것이 훨씬 빠릅니다! –

+1

아마도 akrun이 온라인에 오기 때문에 힘들 것입니다. 하하. 나는 R 태그가 얼마나 작고 단단한 지 사랑해. –

1

read.table를 사용하고 데이터를 가정이 df$var

read.table(text=df$var,sep="-",strip.white=TRUE, 
      col.names=c("Country","State","County")) 

에, 다음 strsplit이 훨씬 빨리 될 것입니다 :

setNames(data.frame(do.call(rbind,strsplit(df$var,split=" - "))), 
     c("Country","State","County")) 

두 가지 모두 표시 :

#  Country   State  County 
#1 United States North Carolina Wake County 
#2 United States North Carolina Warren County 
관련 문제