2

我正在处理相当大的数据集(每月大约 4 个 mio 行,具有 25 个数字属性和 4 个因子属性)。我想创建一个图表,其中包含每个月(过去 36 个月)每个产品的每个数字属性(4 个因素属性之一)的箱线图。

以产品 A 为例:

                    - 
      _             |          -
     _|_            |         _|_
    |   |           |        |   |
    |   |          _|_       |   |
    |   |         |   |      |---|
    |   |         |---|      |   |
    |---|         |   |      |   |
    |_ _|         |   |      |_ _|
      |           |_ _|        |
      |             |          |
      -             |          -
                    -

 --------------------------------------------------------------
    jan '10      feb '10    mar '10 ................... feb '13

但由于这些是我将要使用的相当大的数据集,我想要一些建议来开始如何处理。我的想法(但我不确定这是否可能)是

  • a) 每个产品每月提取数据
  • b)为该特定月份创建一个箱线图(假设产品 A 为 1 月 10 日)
  • c) 将箱线图汇总数据存储在某处
  • d) 在所有月份重复 ac,直到 2013 年 2 月
  • e) 将所有存储的箱线图汇总数据合二为一
  • f) 绘制组合箱线图 g) 对所有其他产品重复 af

所以我的主要问题是:是否可以将单独的 boxlot 摘要合并为一个并创建上面所描绘的组合图?

任何帮助,将不胜感激,

谢谢

4

2 回答 2

2

这是一个简单的示例,您可能可以做一些事情:

读取单个数据集 - 您可能希望覆盖相同的数据或将此步骤包装在一个函数中,因为您正在使用大量数据。

dset1 <- 1:10
dset2 <- 10:20
dset3 <- 20:30

存储一些箱线图信息,注意plot=FALSE

result1 <- boxplot(dset1,plot=FALSE,names="month1")
result2 <- boxplot(dset2,plot=FALSE,names="month2")
result3 <- boxplot(dset3,plot=FALSE,names="month3")

将数据分组并绘制bxp

mylist <- list(result1, result2, result3)
groupbxp <- do.call(mapply, c(cbind, mylist))
bxp(groupbxp)

结果:

在此处输入图像描述

于 2013-03-01T01:05:39.640 回答
0

您将无法绝对精确地预测“fivenum”值的值将用于组合值的组合。考虑两组的情况,每组中的百分位数为 75,以及每组中的观察计数。假设百分位数不相等。您不能只取百分位数的加权平均值来获得聚合值的第 75 个百分位数。请参阅帮助页面?boxplot.stats。但是,我认为,通过使用 Fivenum 集合的中值,您可能会非常接近。这可能是您开始考试的地方。

 mo.mtx <- tapply(dat$values, dat$month, function( mo.dat) c( fivenum(mo.dat), length(mo.dat) ) 
 matplot( mo.mtx[, 1:5] , type="l" )
于 2013-02-28T23:45:53.997 回答