2017-05-22 66 views
1

我已經使用Google表單進行調查。我下載的響應數據集作爲一個電子表格,但不幸的是,當涉及到多個選擇,多anwsers響應,數據看起來是這樣的:R:如何區分多選題,Google表單放入一個變量的多個答案問卷數據?

Q1 Q2  Q3 
1 "A, B ,C" S 
2 "C, D"  T 
1 "A, C, E" U 
3 "D"  V 
2 "B, E"  Z 

我想有它類似於下面的表格:

Q1 Q2  Q2A Q2B Q2C Q2D Q2E Q3 
1 "A, B, C" 1 1 1 0 0  S 
2 "C, D"  0 0 1 1 0  T 
1 "A, C, E" 1 0 1 0 1  U 
3 "D"  0 0 0 1 0  V 
2 "B, E"  0 1 0 0 1  Z 

有沒有一個聰明的方法來做到這一點?我有幾個選擇題,多個答案問題和250多個答覆者,所以我希望能夠輕鬆地做到這一點。

在此先感謝。

+0

我只是想在你打上我的問題作爲一個「的翻版」問題的解決方案。它不適用於我的情況,所以我想你錯了,它是一個確切的副本。你能解開它,讓我可以解決我的問題嗎? – SiKiHe

回答

0

使用dplyrtidyr包:

dat %>% 
    separate(Q2, paste0("v", 1:5), remove=F) %>% 
    gather(q2, val, v1:v5) %>% 
    na.exclude %>% 
    mutate(val=paste0("Q2", val), q2=1) %>% 
    spread(val, q2) %>% 
    select(Q1:Q2, Q2A:Q2E, Q3) %>% 
    mutate_at(vars(Q2A:Q2E), .funs=funs(replace(., is.na(.), 0))) 


    Q1  Q2 Q2A Q2B Q2C Q2D Q2E Q3 
1 1 A, B ,C 1 1 1 0 0 S 
2 1 A, C, E 1 0 1 0 1 U 
3 2 B, E 0 1 0 0 1 Z 
4 2 C, D 0 0 1 1 0 T 
5 3  D 0 0 0 1 0 V 

輸入數據:

dat <- structure(list(Q1 = c(1L, 2L, 1L, 3L, 2L), Q2 = structure(c(1L, 
4L, 2L, 5L, 3L), .Label = c("A, B ,C", "A, C, E", "B, E", "C, D", 
"D"), class = "factor"), Q3 = structure(1:5, .Label = c("S", 
"T", "U", "V", "Z"), class = "factor")), .Names = c("Q1", "Q2", 
"Q3"), class = "data.frame", row.names = c(NA, -5L)) 
相關問題