2017-12-18 4 views
0

r에서는 현재 대화의 데이터 세트로 작업하고 있습니다. 데이터는 현재처럼 보이는 다음문장을 단어로 분리하는 방법

Mike, "Hello how are you" 
Sally, "Good you" 

나는 결국이 데이터의 단어 구름을 만들 계획하고 같이 그것을 필요 : reshape2::melt를 사용하여이 같은

Mike, Hello 
Mike, how 
Mike, are 
Mike, you 
Sally, good 
Sally, you 
+1

은 당신이 지금까지 시도 했습니까? – dww

+0

나는 R에 대해 거의 알지 못해서 많이 알지 못합니다. 이전에 내가 긴 문자열과 이름 만 붙이면 thing1 <- strsplit (df, "") df1 <- data.frame (thing1 = unlist (thing1)) –

+3

제목이 없습니다. 당신이하려고하는 것을 정말로 대표합니다. "문장을 단어로 분리하는 방법"또는 이와 유사한 것이 더 좋을 것입니다. – alistaire

답변

2

아마도 뭔가를?

# Sample data 
df <- read.csv(text = 
    'Mike, "Hello how are you" 
    Sally, "Good you"', header = F) 

# Split on words 
lst <- strsplit(trimws(as.character(df[, 2])), "\\s"); 
names(lst) <- trimws(df[, 1]); 

# Reshape into long dataframe 
library(reshape2); 
df.long <- (melt(lst))[2:1]; 
#  L1 value 
#1 Mike Hello 
#2 Mike how 
#3 Mike are 
#4 Mike you 
#5 Sally Good 
#6 Sally you 

설명 : 분할 list에 공백 \\s 및 저장에 두 번째 열에서 공백 트림 (trimws) 항목을 선도/후행. 첫 번째 열에서 list 항목 이름을 가져오고 의 길이를 reshape2::melt으로 변경하십시오.

나는 토크 나이를 사용하여 쉼표로 구분하여 최대 data.frame을 ...

+0

왜 downvotes? 이 방법은 유효한 해결책을 제시하며 OP를 진행해야합니다. –

+2

아마도 OP가 시도의 증거를 충분히 보여주지 않았기 때문일 것입니다. 어쩌면 그러한 유형의 윤리를지지하는 것은 실망 스럽습니다. –

+0

@JosephK. 승인; 나는 OP에서 자신의 주도권의 부족에 동의합니다; 그래서 완벽한 솔루션보다는 솔루션 개요와 설명을 제공하기로 결정한 것입니다. –

0

에이를 돌려 둡니다, 예를 들어, tidytext::unnest_tokens를 통해 :

library(tidyverse) 
library(tidytext) 

dialogue <- read_csv(
    'Mike, "Hello how are you" 
    Sally, "Good you"', 
    col_names = c('speaker', 'sentence') 
) 

dialogue %>% unnest_tokens(word, sentence) 
#> # A tibble: 6 x 2 
#> speaker word 
#>  <chr> <chr> 
#> 1 Mike hello 
#> 2 Mike how 
#> 3 Mike are 
#> 4 Mike you 
#> 5 Sally good 
#> 6 Sally you 
관련 문제