【问题标题】:Multiple-choice in R: how to tidy survey data using dplyr/tidyr?R 中的多项选择:如何使用 dplyr/tidyr 整理调查数据?
【发布时间】:2019-09-26 00:47:56
【问题描述】:

我一直在使用 tidyr R 包中的 collect() 来整理我的调查数据。

不知道在整理数据的时候有没有办法处理多项选择题?

这个问题不是关于一个特定的错误,而是更多关于什么策略最合适。

想象一下下面的小标题:

tb1 <- tribble(~id,~x1,~x2,~x3,~y1,~y2,~z,
               "Harry",1,1,NA,NA,1,"No",
               "Jess",NA,1,1,1,1,"Yes",
               "George",NA,NA,1,NA,1,"No")

在收集这多个问题的结果时,我得到(逻辑上)“Harry”、“Jess”和“George”的多行:

tb1 %>%
  gather(X,val,x1:x3,-id,-z) %>%
  filter(!is.na(val)) %>%
  select(-val) %>%
  gather(Y,val,y1:y2,-id,-X,-z) %>%
  filter(!is.na(val)) %>%
  select(-val) 

# A tibble: 7 x 4
  id     z     X     Y    
  <chr>  <chr> <chr> <chr>
1 Jess   Yes   x2    y1   
2 Jess   Yes   x3    y1   
3 Harry  No    x1    y2   
4 Harry  No    x2    y2   
5 Jess   Yes   x2    y2   
6 Jess   Yes   x3    y2   
7 George No    x3    y2

我有点担心多个条目,并且想知道是否有一个好的策略来处理需要收集二进制列的调查的多项选择题。

最后,我希望能够绘制和分析各种变量的值:即人们选择 y2 的次数。

这种长格式似乎不适合分析这个,因为所有 Harry 两次提到 y2 的 count() 都会上升。

我对这个话题的提问流程如下:

  1. 将多个响应收集到单个列中是否更好/更容易进行分析?
  2. 如果是,您如何有效地做到这一点?
  3. 如果不是,当我将多重响应保留为长格式时,在进一步分析中需要注意哪些含义?
  4. 您如何将这些含义融入您的代码中? (也许是 id 的特定“组”参数?你能给我举个例子吗?)

【问题讨论】:

    标签: r dplyr tidyr


    【解决方案1】:

    我认为最简单的方法肯定是将所有响应收集在一个列中。

    library(tidyverse)
    
    tb1 %>%   
      spread(key = z, value = z, sep = "_") %>%
      gather(key = "Question", value = "Answer", -id, na.rm = T) %>%
      select(-Answer) -> reshape_tb1
    
    > reshape_tb1
    # A tibble: 12 x 2
       id     Question
       <chr>  <chr>   
     1 Harry  x1      
     2 Harry  x2      
     3 Jess   x2      
     4 George x3      
     5 Jess   x3      
     6 Jess   y1      
     7 George y2      
     8 Harry  y2      
     9 Jess   y2      
    10 George z_No    
    11 Harry  z_No    
    12 Jess   z_Yes
    

    这样您就可以轻松地将其提供给ggplot2

    ggplot(reshape_tb1) +
      geom_bar(aes(x = Question))
    

    【讨论】:

    • 嘿,非常感谢,我一定会试试这个。如果您想对多个变量进行比较怎么办,即将 y1 用作“颜色”美学。和 z 作为“形状”美学?
    • Hm 困难.. 您需要将它们放在不同的列中,因为人们可以在一个问题中选择多个答案,这意味着您将再次得到重复的答案,毕竟不清楚是什么你实际上是在比较。例如。 Harrys 回答y2,当与x 比较时,你会用x1x2 着色吗?但这只是表面的检查。
    猜你喜欢
    • 2016-07-05
    • 2021-09-18
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多