是否有可能将R关联对象转换为数据帧并使用它进行绘图?



是否可以将关联对象转换为数据帧,然后以某种方式使用它进行绘图?我需要这样做的原因是因为我必须从安全服务器导出CSV格式的文件(不允许关联对象和原始数据-但每月/每周计数很好),并在服务器外部生成绘图。例句:

library(outbreaks)
library(ggplot2)
library(incidence)
dat <- ebola_sim$linelist$date_of_onset
i <- incidence(dat)
plot(i)
i_df <- as.data.frame(i)

是否有一种方法可以使用"i_df"中的原始数据生成相同的绘图?dataframe吗?例如,它可以被转换回一个关联对象吗?

incidence:::incidence.plot()函数基本上是ggplot()/geom_col()的包装器。对于特定的示例数据集,您基本上可以执行

ggplot(i_df, aes(dates,counts)) + geom_col(width=1)

复制plot(i)输出的基本内容;对于完全复制,您可以更新标签、轴等。

关于你的第二个问题,你可以从i_df中恢复等效的incidence对象,通过这样做:

incidence(rep(i_df$dates, i_df$counts))

如果您使用groups参数创建了一个关联对象,恢复方法是类似的,但您必须单独处理每个组(如果有很多组,我建议使用某种循环结构)。例如,当groups=gender

# creation of grouped incidence object
i.sex <- incidence(ebola_sim$linelist$date_of_onset, groups = ebola_sim$linelist$gender)
# conversion to data.frame
i.sex_df = as.data.frame(i.sex)
# recovery back to an equivalent incidence object
incidence(
c(rep(i.sex_df$dates, i.sex_df$f),rep(i.sex_df$dates, i.sex_df$m)),
groups = c(rep("f",sum(i.sex_df$f)), rep("m",sum(i.sex_df$m)))
)

最新更新