0

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

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

假设我有一个包含 10,000 个数字行(表示变量的列)的标准 csv 数据集。我想创建一个结果数据集,该数据集采用这个巨大的数据集并将其分成 20-30 个 bin,每个 bin 代表一个数据点,它是大数据集中一定数量的数据点。例如,如果我有 10 个 bin,每个 bin 将是 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) 绘制数据。如果是这种情况,那么我什至不必担心平均其他列!

我怎样才能做到这一点?

感谢您的任何意见,很抱歉发了这么长的帖子,我觉得我需要提供所有必要的信息。

4

1 回答 1

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
> 
于 2013-08-11T10:41:53.560 回答