【发布时间】:2014-09-30 09:54:29
【问题描述】:
我对同一个站点的降雨量进行了大约 14 年的多次观测,数据框是这样的:
df (from date -01/01/2000)
v1 v2 v3 v4 v5 v6 ........ v20
1 1 2 4 8 9..............
1.4 4 3.8..................
1.5 3 1.6....................
1.6 8 .....................
.
.
.
.
截至日期 2013 年 1 月 31 日,即总共 5114 次观察
其中 v1 v2 ...v20 是同一点的降雨模拟;我想绘制箱形图,它表示当所有观察值一起收集时,分位数和每月中位数的集体范围。
我可以使用以下方法绘制单个月值的箱线图:
df$month<-factor(month.name,levels=month.name)
library(reshape2)
df.long<-melt(df,id.vars="month")
ggplot(df.long,aes(month,value))+geom_boxplot()
但是在这个问题中,由于每天都有数据并且有多个观察结果,我不知道从哪里开始。
样本数据
df = data.frame(matrix(rnorm(20), nrow=5114,ncol=100))
如果您想使用动物园对象:
date<-seq(as.POSIXct("2000-01-01 00:00:00","GMT"),as.POSIXct("2013-12-31 00:00:00","GMT"), by="1440 min")
如果你愿意,你也可以将它转换为动物园对象
x <- zoo(df, order.by=seq(as.POSIXct("2000-01-01 00:00:00","GMT"), as.POSIXct("2013-12-31 00:00:00","GMT"), by="1440 min"))
【问题讨论】:
-
你能不能
dput()一些df的最小例子,这样想要回答的人就不必生成它了吗? -
嘿@ilir 示例数据集是:df = data.frame(matrix(rnorm(20), nrow=5114,ncol=100)) 其中每列代表模拟,行代表每日数据.谢谢你的建议。
-
这是我发布的一个好问题;我相信很多做模拟的人会发现它很有用,请有人尝试找到解决方案。非常感谢。
-
您会考虑提供更好的样本数据吗?例如,每列包含什么?你可能会说雨量。但是,哪一年?哪个月?您只期待
melt(),但可能还有更多事情要做来安排您的数据集。 -
@user197393 努力并正确编辑问题。如果我从字面上看你的例子,那么在创建
df之后我得到了错误replacement has 12 rows, data has 5114。
标签: r plot ggplot2 time-series boxplot