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 所建议的:来自 tidyr
的 pivot_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
我从基于调查的数据收集系统中读取了人口统计数据。来自多项选择题的数据(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 所建议的:来自 tidyr
的 pivot_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