在ggplot中绘制指定条件柱状图:ID155的Acceptance=Yes年份统计
解决你的柱状图绘制问题
我们一步步来修正代码,搞定你需要的柱状图:
先修正原始数据集的小问题
你定义的Acceptance列里的no和yes没有加引号,R会把它们当成未定义的变量,直接运行会报错。先把数据集改对:
dat <- data.frame( ID = c(150,151,155,155,155,155,150), year = c(1995,2011,2012,2012,2013,2012,2013), Acceptance = c("no","yes","yes","yes","yes","no","no") # 给字符值加上引号 )
再说说你原代码的几个错误点
- 你写了
year(Date),但你的数据里根本没有Date列,应该直接用year列筛选年份 - 漏掉了筛选Acceptance为Yes的记录这个关键条件,这是你需求里明确要求的
- 已经筛选了ID=155,分组时没必要再按ID分组,只按
year分组就足够
正确的数据处理与绘图代码
library(dplyr) library(ggplot2) # 处理数据:筛选符合条件的记录,统计每年的数量 cl_d <- dat %>% filter(ID == 155) %>% filter(Acceptance == "yes") %>% filter(year > 2000) %>% group_by(year) %>% summarise(count = n()) # 绘制柱状图 ggplot(cl_d, aes(x = year, y = count)) + geom_bar(stat = "identity", fill = "steelblue") + # 用stat='identity'直接映射数值,加填充色更直观 labs( title = "ID 155:每年Acceptance为Yes的记录数", x = "年份", y = "记录数量" ) + theme_minimal()
运行这段代码后,你会得到完全符合需求的柱状图:X轴是年份,只展示ID=155且Acceptance为Yes的记录数量。
内容的提问来源于stack exchange,提问作者umar
相关产品推荐
相关产品推荐

