将巨大的数据集分成多个数据集并将其平均在R中

时间:2013-08-11 07:11:39

标签: r data-visualization

我正在尝试开发一个程序,以允许图形中的大数据可视化。基本上,我的想法是我可以输入一个巨大的数据集并输出一个线图,在其中我可以实际看到趋势。

这是我的想法(请告诉我,如果已经有这样的算法内置到R或包中,因为我意识到这是聚合数据的一种非常基本或“原始”的方式。我也不想要使用sample()是因为我专门寻找数据趋势。我意识到在这种情况下,数据的准确性和数据表示的简易性之间总会存在权衡。):

假设我有一个10,000个数字行的标准csv数据集(代表变量的列)。我想创建一个结果数据集,它接受这个巨大的数据集并将其分成20-30个区间,每个区域代表一个数据点,即大数据集中一定数量的数据点的平均值。例如,如果我有10个箱子,每个箱子将是平均1,000个数据点。

这是我的代码:

average <- function(dataf)
{
  numericdata <- dataf[,sapply(dataf,is.numeric)]
  ***mean(numericData, trim = 0, na.rm = TRUE)
}
x <- names(numericData)
real <- ddply(diamonds, .(x), average)

***我不知道该怎么做。这里是我想将numbericdata分成一定数量的bin的地方,其中每个bin中的数据将被平均掉。

另一个重要的注意事项是,我输入的大多数数据集都有时间变量(这就是为什么我提到了一个折线图)。 mean()函数仅适用于数字数据,因此我如何平均时间列?通过平均,我的意思是时间列是 YYYY-MM-DD 格式,我可以汇总天数并按月绘制数据(YYYY-MM)。如果是这种情况,那么我甚至不必担心平均其他列!

我该怎么做?

感谢您的任何意见,对于长篇文章感到抱歉,我觉得我需要提供所有必要的信息。

1 个答案:

答案 0 :(得分:0)

对于ddply来说,这个问题听起来很简单,你已经在问题中引用过了吗?

require(lubridate)
require(plyr)

mylen <- 3000
mydf <- data.frame(mydate = seq(as.Date('2000-01-01'), length.out = mylen, by = 'day'),
                   value = runif(mylen, 10, 10000))

mydf$month <- month(mydf$mydate)
mydf$year <- year(mydf$mydate)

newdf <- ddply(mydf, .(year, month), summarise, my.mean = mean(value))

输出如下:

> tail(newdf)
   year month  my.mean
94 2007    10 5103.671
95 2007    11 5034.605
96 2007    12 5534.769
97 2008     1 4437.816
98 2008     2 4717.377
99 2008     3 5862.858
>