gpt4 book ai didi

r - 我应该如何处理多项选择/响应(检查所有适用的)数据?

转载 作者:行者123 更新时间:2023-11-30 09:42:25 27 4
gpt4 key购买 nike

我正在处理一些我感兴趣的调查数据,但遇到了一个小问题。有一些问题要求受访者检查候选人中的前 3 名...

例如,

  • 这是一个水果列表,您可以从中选择 3 种。1) 香蕉 2) 苹果 3) 葡萄柚 4) 桃子 5) 西瓜

  • 随后,多名受访者对这个问题给出了不同的答案。

    • 受访者 a - 1、3、4(香蕉、柚子、桃子)
    • 受访者 b - 1、2、5
    • 受访者 c - 3, 4
    • (等等)
  • 负责清理调查数据的人将其分为三列,每列代表受访者做出的三个选择之一。

     Q1_1  Q2_2  Q3_3
a 1 3 4
b 1 2 5
c 3 4 NA
  • 我的问题是...有什么办法可以将其合并为一栏吗?我知道我可以将它们虚拟化并根据上面的水果类型制作 5 列...
        Banana Apple Grapefruit Peach Watermelon
a 1 0 1 1 0
b 1 1 0 0 1
c 0 0 1 1 0
  • 但是,我担心这可能会损害我预计在后续研究中运行的预测模型的准确性。其中一个问题为受访者提供了大约 990 个可供选择的选项。如果我坚持模型化,数据的维度将显着增加......

有什么好的办法请告诉我!我也很想知道是否有任何 R 包指定用于此类问题。

最佳答案

我建议使用dplyrgather()将三个水果变量转换为一个长变量。请注意,在我的玩具示例中,每个受访者可能都有来自 sample() 的重复水果响应,因此我删除了重复的行。

df <- data.frame(id=1:100,
fruit1=sample(c('banana','apple','grape','peach','watermelon'),100,T),
fruit2=sample(c('banana','apple','grape','peach','watermelon'),100,T),
fruit3=sample(c('banana','apple','grape','peach','watermelon'),100,T),
outcome=runif(100))

# find respondents with duplicated fruits (eg, putting apple twice)
dupl <- df %>% gather(k,v,-id,-outcome) %>%
count(id,v)

# only keep one of the duplicated rows
df1 <- df %>% gather(k,v,-id,-outcome) %>% left_join(dupl) %>%
group_by(id,v,n) %>% slice(1) %>% select(-n)

lm(outcome~v,df1)

Call:
lm(formula = outcome ~ v, data = df1)

Coefficients:
(Intercept) vbanana vgrape vpeach vwatermelon
0.482981 -0.023715 0.020129 0.008117 -0.053460

关于r - 我应该如何处理多项选择/响应(检查所有适用的)数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57068335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com