2017-12-04 4 views
-1

R을 사용하여 여러 열을 여러 열로 분할하는 방법에 어려움을 겪었지만 결과가 없으면 Stackoverflow에서 많은 트릭을 시도했지만 작동하지 않습니다. 지금여러 열로 분할 된 열

reactions__001 reactions__002 reactions__003 
25 Like  23 Love     
15 Like  5 Love   3 Haha       
20 Haha  3 Sad   2 Angry       

내가 무엇을 찾고 내가 str_split_fixed(df$reactions__001, " ", 2) 시도이 하나

Like Love Haha Sad Angry 
25 23 0 0 0  
15 5 3 0 0       
0 0 20 3 2 

같은이 데이터 프레임을 분할되지만처럼 나에게 뭔가를 제공합니다 : 여기 내 probleme이다

[26,] "1" "Angry" 
[27,] "3" "Like" 
[28,] "0" ""  
[29,] "" ""  
[30,] "1" "Like" 
[31,] "10" "Like" 

답변

3
xx$id = 1:nrow(xx) 
library(tidyr) 
library(dplyr) 
xxlong = gather(xx, key = "key", value = "value",-id) 
xxlong = separate(xxlong, value, into = c("num", "attr")) 
xxlong %>% na.omit %>% select(-key) %>% 
    spread(key = attr, value = num, fill = 0) 
# id Angry Haha Like Love Sad 
# 1 1  0 0 25 23 0 
# 2 2  0 3 15 5 0 
# 3 3  2 20 0 0 3 

열의 순서를 변경하지 않겠습니다.


이 데이터를 사용하여 :

xx = read.table(text = "reactions__001 reactions__002 reactions__003 
'25 Like'  '23 Love'     
'15 Like'  '5 Love'   '3 Haha'       
'20 Haha'  '3 Sad'   '2 Angry' ", header = T, fill = T) 
+0

왜 파이프를 모두 함께? – useR

+0

OP가 각 명령이 개별적으로 수행하는 작업을 배우는 데 도움이 될 것으로 생각합니다. 조정 및 디버깅 할 수있는 기회를 제공합니다. 무슨 일이 일어나고 있는지 이해하면 누구나 한 데 모일 수 있습니다. 그러나 초보자는 종종 물건을 분해하는 것에 너무 수줍어합니다. – Gregor

+0

@Gregor 만약 내가 "review", "reactions__001", "reactions__002", "reactions__003", "username", "rating", "date"와 같이 데이터 프레임을 가지고 있다면 무엇인가를 변경해야합니까? 위의 코드? – PacMan

관련 문제