【问题标题】:Boxplot by Date in RR中按日期的箱线图
【发布时间】:2015-03-22 20:00:27
【问题描述】:

随着时间的推移,我每天都会收集数据。我想将数据绘制为总结每日数据的箱线图。我见过的大多数示例都以daily 或每月为基础收集数据,并从中制作箱线图。

举个例子:

    library(xts)
 dates=c(rep("2011-02-11",8),rep("2011-02-13",8),rep("2011-02-19",8))
measure=rnorm(length(dates))
example <- as.xts( measure,order.by = as.Date( dates ))
boxplot(coredata(example), order.by=index(example),.CLASS = "xts")

我最终没有按日期分开。

我想不通。我认为这可能与 R 如何处理 X 值有关,我听说它会将它们变成因子。任何帮助将不胜感激。

【问题讨论】:

  • coredata() 删除所有日期信息。这就是 zoo/xts 对象的index 中存储的内容。
  • 这是真的,但是如果我简单地询问boxplot(example),它会给我错误Error in try.xts(c(1.03773548252495e-317, 2.06236439159703e-317, 7.76223611312559e-316, : Error in xts(coredata(x), order.by = index(x), .CLASS = "xts", ...) : order.by requires an appropriate time-based object,可以通过询问boxplot(coredata(example) ~ index(example)) 来临时修复,但这给我留下了均匀间隔的箱线图,而日期是不均匀的。

标签: r xts boxplot zoo


【解决方案1】:

这是一个使用 data.frame 代替 as.xts 的解决方案:

example <- data.frame(dates=as.Date(dates),measure=measure)
boxplot(example$measure ~ example$dates)

更新

为缺失日期创建空间的一种方法是创建一个新数据集,其中包含所有缺失日期的 NA,然后在箱线图中允许 NA。

原始示例

dates=c(rep("2011-02-11",8),rep("2011-02-13",8),rep("2011-02-19",8))
measure=rnorm(length(dates))
example <- data.frame(dates=as.Date(dates),measure=measure)

创建一个模板 data.frame,包含开始日期和结束日期

n=20
template<-data.frame(dates = seq(as.Date(c("2011-02-11")), by = 'day', length = n)) 

合并模板和示例,使缺失日期的变量“度量”的值为 NA,最后是箱线图。

df<-merge(template, example, all.x=TRUE, by="dates")

boxplot(df$measure ~ addNA(df$dates))

【讨论】:

  • 非常感谢!这解决了我的一个问题。我希望使用 xts 来解决它,以便它可以处理间隔不均匀的日期。
  • 很高兴为您提供帮助!您能否举一个例子,说明 data.frame 解决方案在哪些日期不均匀时会出现问题?
  • 在当前示例中,日期设置为 2 月 11 日、13 日和 19 日。虽然这些日期相隔 2 天和 6 天,但它们在图上的间隔均匀。
  • 我进行了更新以添加缺失日期的空间,诀窍是使用箱线图中的 NA 函数并熟练输入数据集。希望它有效!
  • 哇!谢谢鲁斯格,太棒了!我想我没见过 addNA() 函数,很酷。这是完美的非常感谢你!
猜你喜欢
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多