2017-11-20 12 views
0

패키지 tm을 사용 중입니다.DTM의 상위 기능 찾기 (동일한 ID의 여러 문서 포함)

두 개의 열이있는 데이터 프레임이 있는데 첫 번째 열은 ID이고 seocnd 열은 텍스트입니다. 데이터 프레임은 다음과 같습니다.

Id  Text 
13456 Hi, Good morning 
13457 How are you? 
13456 May I know who I am speaking to? 
13456 Hi, Good evening 

나는 TM 패키지를 사용 DTM을 구축하고 각 문서에 대한 상위 5 개 단어를 추출하고이처럼 보이는 한 :

Id  Term1 Term2 Term3 Term4 Term5 
13456 Hi Good morning term4 term5 
13457 How are you  term4 term5 
13456 I  Know may  who to 
13456 Hi Good Evening term4 term5 

그러나 필요한 출력은 다음과 같습니다

Id  Term1 Term2 Term3 Term4 Term5 
13456 Hi Good I  morning evening 
13457 How are you term4 term5 

이 질문에 대한 이전 질문은 찾을 수 없습니다. 미리 감사드립니다.

+0

시도해 볼 수 있도록 명시 적으로 사용했던 기능을 제공 할 수 있습니까? – denis

답변

0

당신이 직면 한 문제는 데이터의 각 줄이 개별 문서로 취급된다는 사실에서 비롯됩니다. 따라서 dtm을 생성하는 과정에 데이터를 입력하기 전에 데이터를 aggregate으로 변환해야합니다.

기본 R에 aggregate을 사용하는 방법과 예는 다음과 같습니다. 엄청난 수의 문서를 가지고있는 경우,보기에 볼 수있는 data.table 패키지를 사용하여 더 효율적으로 수행 할 수 있습니다. 그러나 간단하게하기 위해 기본 R을 사용합니다 (자신의 모범적 인 데이터를 사용했습니다. 다음 번에 dput을 사용하거나 다른 사람들이 예제 데이터를 더 쉽게 읽을 수 있도록 데이터를 생성하는 코드를 제공하십시오).

df <- data.frame(id = c(1, 1, 2) , text = c("text1.", "text2.", "text3.")) 
# id text 
# 1 1 text1. 
# 2 1 text2. 
# 3 2 text3. 
df <- aggregate(df$text, by = list(df$id), FUN = function(x) paste(x, collapse = " ")) 
# Group.1   x 
# 1  1 text1. text2. 
# 2  2  text3. 
colnames(df) <- c("id", "text")