You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言incidence对象转数据框导出后能否绘图或转回原对象?

解答

完全可以实现,两种方案都能做到和原始incidence对象输出的图表完全一致,不需要导出原始个案数据,完全符合你的数据导出要求。


方案1:直接用导出的数据框绘图,1:1复刻原生效果

as.data.frame()转换incidence对象时会完整保留绘图需要的所有核心信息:

  • dates列:每个计数时间区间的起始日期
  • counts列:对应时间区间的病例数
  • 如果是带分组的incidence对象,会保留分组字段和对应分组的计数字段

incidence默认的plot()方法本质是封装好的ggplot2柱形图,只要匹配对应的柱宽、轴设置、主题,就能完全复刻效果,示例代码:

library(ggplot2)
# 以默认日度incidence为例
ggplot(i_df, aes(x = dates, y = counts)) +
  geom_col(width = 1, fill = "#333333", color = "black") +
  scale_x_date(date_breaks = "2 weeks", date_labels = "%Y-%m-%d") +
  labs(x = "发病日期", y = "病例数") +
  theme_classic()

如果是周度聚合的incidence,把geom_col()的width参数设为7;月度聚合设为30左右即可,和原生图视觉上没有任何差异。


方案2:将数据框重新转换回incidence对象

incidence包原生支持用聚合好的计数数据重建incidence对象,不需要原始个案数据,重建后的对象和你在服务器内生成的原始对象完全等价,可以直接调用原生plot()方法出图。
操作注意点:你导出CSV的时候,额外记录下原始生成incidence时设置的时间间隔参数(interval,比如日度是"day"、周度是"week"、月度是"month")即可,如果当时设置过first_date/last_date截断时间范围,一并记录即可。
示例代码:

# 读入导出的CSV文件,指定日期列格式
i_df <- read.csv("incidence_export.csv", colClasses = c("Date", "integer"))

# 重建incidence对象
i_rebuild <- incidence(
  x = i_df$dates,
  interval = "day", # 替换为你实际使用的时间间隔
  counts = i_df$counts
)

# 直接调用原生绘图方法,出图和原始plot(i)完全一致
plot(i_rebuild)

如果是带分组的incidence,重建时把counts参数传入对应分组的计数数据框即可,所有原生incidence对象的功能(比如拟合增长模型、估计峰值)都能正常使用。


内容的提问来源于stack exchange,提问作者krtbris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:57:17