如果受访者对多项选择回答是,则显示 R 函数

R function to display if respondent answered yes to multiple choices

我收到了一项调查的回复,要求受访者选择所有适用的选项。每个选项都被视为它自己的变量 - 如果您对多项选择选项选择是,它们将获得 1,如果未选择,它们将获得 0。

我想看看是否有人选择了一个选项,有多少人还选择了选项 B 或选项 c。理想情况下,我想创建一个 table 来显示对选项 MR1 回答是 (01) 然后对选项 MR2 和 MR3 回答是的人的百分比。

df <- read.table(text = "ID MR1 MR2 MR3
Person1 1 1 1
Person2 1 0 0
Person3 1 1 0", header = T, sep = " ", stringsAsFactors = F)

理想情况下,我希望输出看起来像这样 - 显示 100% 选择 MR1 的人也选择了 MR1,2/3 选择 MR1 的人也选择了 MR2 或 MR3,还有 1/3 的人选择 MR2 的人也选择了 MR3 -- 这将有助于查看是否有任何 MR 选项比其他选项更有可能组合在一起。

有这样的代码吗?

       MR1  MR2 MR3
MR1    1    0.66    0.66   
MR2   0.66    1    0.33  
MR3   0.66    0.33   1

这是一种方法,其结果表示形式略有不同。在你的情况下,你只看对而不是所有可能存在的选项。

df <- df %>% mutate(x = case_when(MR1 == 0 ~ "none",
                            MR1 == 1 & MR2 == 0 & MR3 == 0 ~ "one",
                            MR1 == 1 & MR2 == 1 & MR3 == 0 ~ "two-second",
                            MR1 == 1 & MR2 == 0 & MR3 == 1 ~ "two-third",
                            MR1 == 1 & MR2 == 1 & MR3 == 1 ~ "three"))

df %>% group_by(x) %>% summarise(answers = n()) %>% mutate(share = round(answers/sum(answers)*100))