首页 > 解决方案 > 如何在 R 中循环多个分类变量,进行计算然后创建绘图

问题描述

我是使用 R 编码的新手,我正在对分类变量进行一些分析。

我的数据框由单个受访者的答案组成。我想按区域分析数据。数据框如下所示:

structure(list(area = c("chicago", "portland", "chicago", "detroit" ), 
               a1 = c("good", "bad", "good", "bad"), 
               a2 = c("good", "bad", "good", "bad"), 
               a3 = c("bad", "bad", "bad", "bad"), 
               weight = c(140.626215, 111.285163, 132.497397, 129.510583), 
               strata = c("male_ch_20", "female_po_40", "male_ch_70", "male_po_30")), 
          row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame")) 

到目前为止,我正在做的是将所有领域的百分比汇总在一起,并单独回答每个答案:

my_data_new <- my_data %>%
  group_by(area, answer2) %>%
  summarize(share = survey_mean()) %>% 
  ungroup() %>%
  my_own_function() %>% 
  arrange(answer2)
  my_data_new 

然后绘制它(y 值由 my_own_function 产生)

ggplot() +  
  geom_bar(data = my_data_new, aes(x = area, y = percentage, fill = answer2), stat = "identity")

到目前为止,我一直在将答案变量(answer1、answer2、然后 answer3 等等)手动输入到 group_by 以及ggplot函数中,但我想使用循环来执行此操作。

我这样做是为了访问各个区域,但不知道如何从这里继续。

list_of_tempdata <- list()
unique_areas <- unique(my_data_new$area)
for(i in 1:length(unique_areas)){
  list_of_tempdata[[i]] <- my_data_new[my_data_new$area==unique_area[i],]
}

标签: rloopscategorical-datasurvey

解决方案


推荐阅读