2014-09-19 2 views
2

저는 R이 처음이에요.data.frame의 독특한 단어 목록

질병 및 진단 키워드를 일관성없는 형식으로 설명하는 열이있는 문자의 벡터가 있습니다. 샘플은 다음과 같습니다.

flu 
fever/feverish 
fever cold 

나는이 모든 고유 단어를 추출하는 가장 좋은 방법을 찾고 있습니다. 사용하여

[[1]] 
[[1]][[1]] 
[1] "flu" 

[[2]] 
[[2]][[1]] 
[1] "fever" "feverish" 
... 

나는이 달성 : 내가 여기까지 알아낼 수있는 가장 좋은 방법은 나에게 벡터의 벡터를주고있다

split_words <- function(x){ strsplit(x, "[^[:alpha:]]+") } 
lapply(diagnoses, split_words) 

최고의 단일 벡터에이를 변환하는 방법 또는 무엇입니까 단일 열 데이터 프레임 그래서 나는이 벡터에 unique을 실행하고 중복을 제거 할 수 있습니다.

는 R에서 최고의 패키지가 비슷한 철자를 제거하는 형태소 단어를 무엇이다, 등 복수형 독특한 요소

+0

모든 보장 소문자? 공백이나 구두점을 나누고 버리시겠습니까? '/'또는 '-'가 항상 부적절하다고 확신합니까? 예. * 길랑 - 바레 증후군 *? – smci

+0

모든 용어를 "-"및 "/"로 검사했으며 실제 정규 표현식은 좀 더 복잡합니다. 그러나 나는이 질문을 단순화하기를 원했다. 나는이 단계에 도달하기 전에 질병의 전체 목록에서 덜 거칠고 독특하게 달리고있다. – Hans

답변

7

당신은 모든 요소와 벡터를 얻을 수 strsplitunlist를 사용할 수 있으며, unique.

x <- c("flu", "fever/feverish", "fever cold") 
(ul <- unlist(strsplit(x, "\\s+|[[:punct:]]"))) 
# [1] "flu"  "fever" "feverish" "fever" "cold" 
unique(ul) 
# [1] "flu"  "fever" "feverish" "cold" 
+0

선택적 구두점을 사용하여 분할합니다. '[.,; :]'에 나눠서'[- /]'에 나눠서는 안됩니다. – smci

1
# > df 
#   illness 
#1   flu 
#2 fever/feverish 
#3  fever cold 


udf <- unlist(strsplit(df$illness, "[^[:alnum:]]")) 
# [1] "flu"  "fever" "feverish" "fever" "cold" 

table(udf) 
#udf 
# cold fever feverish  flu 
#  1  2  1  1