r - 如何在 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],]
}
解决方案
推荐阅读
- node.js - 我找不到使用 node/express 从 gremlin-server 获取数据的方法 - promise {
} 永远 - coldfusion - Coldfusion cffile 上传替换未选择文件
- python - Python 按对象键分组给出错误
- python - ValueError:连接轴的所有输入数组维度必须完全匹配
- javascript - 试图用数组本身过滤对象数组
- java - System.getProperty("java.io.tmpdir") 没有返回正确的位置
- node.js - 使用 NPM 时,包是否可能依赖于自身的先前版本?
- javascript - 是否有一个功能可以在特定的按键上做而不是点击
- prolog - 当只存在一个时,Prolog 会尝试找到多个解决方案
- linux - 如何从纯文本自行格式化的二进制文件中获取纯文本?