在R中绘制研究招募月度折线图时遇报错问题求助
问题解决:ggplot绘制累计招募折线图的报错修复
报错原因
你的代码存在两个核心问题:
count(as.yearmon(recruitment$date))的写法会生成列名极不规范的列(列名就是表达式本身),且管道操作内无需用recruitment$date,直接写date即可。- 到ggplot环节时,你仍在引用原数据框的
recruitment$date,但此时管道传递的是分组计数后的数据集,里面根本没有原date列,这种错误引用导致ggplot无法正确解析yearmon对象,触发as.quoted方法报错。
修正后的代码
library(dplyr) library(zoo) library(ggplot2) # 显式加载ggplot2包,避免依赖间接加载 recruitment %>% # 给转换后的月份列命名为month,管道内直接调用date列 count(month = as.yearmon(date)) %>% mutate(cum_count = cumsum(n)) %>% # aes中使用处理后数据集的列 ggplot(aes(x = month, y = cum_count)) + geom_line() + geom_point() + scale_x_yearmon(format = "%Y-%m") # 可选:指定x轴日期显示格式
关键修改点
- 在
count()中给月份列明确命名(month = as.yearmon(date)),让后续数据集拥有清晰可引用的列名。 - ggplot的
aes()里调用处理后数据集的month和cum_count列,而非原数据框的列。 - 补充加载
ggplot2包,避免因间接加载失败导致的潜在问题。
内容的提问来源于stack exchange,提问作者Apwalmus
相关产品推荐
相关产品推荐

