R-从多项选择输出中计算多列

R-counting multiple columns from a multiple choice output

我从基于调查的数据收集系统中读取了人口统计数据。来自多项选择题的数据(select 所有适用项)每个选择都是一个单独的列。我合并了它们,这看起来很棒,直到我尝试输出图形,然后我意识到 R 计算变量的每个唯一组合而不是每个变量的所有。 (例如,最喜欢的颜色蓝色 = 2,最喜欢的颜色蓝色和红色 = 1;不是蓝色 =3)。我再次尝试使用原始数据制作一个 table,其中仅包含 id 变量和我想要计算的变量。

data<-(record_id=c(1,2,3,4,5,6,7,8,9,10,11), choice_1 = c('blue','blue','blue','blue','blue',NA,NA,NA,NA,NA,NA),
choice_2 = c('red',NA,NA,NA,NA,'red',NA,NA,NA,NA,NA), choice_3=c(NA,'green','green',NA,NA,NA,'green','green',NA,NA,NA))
choices.df<-data%>%
dplyr::select(record_id,choice_1,choice_2,choice_3)%>%
group_by(choice_1,choice_2,choice_3)%>%
summarise(counted_choices = n())

计数列将每个按行组合计算为唯一,相反,我希望计数的输出显示为 3 蓝色、2 红色、4 绿色。 我将如何修改此代码?

我的一个想法是合并,然后使用 if_else 函数或循环进行字符串搜索。

感谢任何帮助。

不确定我是否理解您的预期输出,但正如 Limey 所建议的:来自 tidyrpivot_longer() 会将您的数据集重塑为更易于分析的格式。

data |>
  tidyr::pivot_longer(cols = !record_id,
                      values_to = "colour") |> 
  dplyr::count(colour)

输出:

  colour     n
  <chr>  <int>
1 blue       5
2 green      4
3 red        2
4 NA        22