以R为单位的月时间序列

以R为单位的月时间序列,r,histogram,time-series,R,Histogram,Time Series,我有一个200万unix时间戳的数据帧,我想每月做一个柱状图。有什么建议吗?谢谢解析它们(例如,通过as.POSIXct())以便正确使用DateTime对象 然后使用聚合例程,例如,zoo和xts包为时间索引结构提供了聚合例程,或者ddply更一般地提供聚合例程,或者您可以使用基本R函数 你没有说你想在直方图中显示什么。算了吧?在这种情况下,这里有一个简单的例子: R> set.seed(42) # fix RNG R> zz <- data.frame(val

我有一个200万unix时间戳的数据帧,我想每月做一个柱状图。有什么建议吗?谢谢

解析它们(例如,通过
as.POSIXct()
)以便正确使用DateTime对象

然后使用聚合例程,例如,zoo和xts包为时间索引结构提供了聚合例程,或者ddply更一般地提供聚合例程,或者您可以使用基本R函数

你没有说你想在直方图中显示什么。算了吧?在这种情况下,这里有一个简单的例子:

R> set.seed(42)        # fix RNG
R> zz <- data.frame(val=runif(100), ts=Sys.time() - 6*31*24*60*60*runif(100))
R> summary(zz)         # values over June to Nov 2011 period
      val                 ts                        
 Min.   :0.000239   Min.   :2011-06-01 09:56:20.50  
 1st Qu.:0.259673   1st Qu.:2011-07-10 01:43:58.81  
 Median :0.539714   Median :2011-08-14 22:19:12.73  
 Mean   :0.524479   Mean   :2011-08-22 17:57:00.34  
 3rd Qu.:0.763614   3rd Qu.:2011-10-11 10:24:16.34  
 Max.   :0.988892   Max.   :2011-11-27 03:51:25.63  
R> zz$mon <- as.POSIXlt(zz$ts)$mon + 1
R> summary(zz)         # now we have the month as a column
      val                 ts                              mon       
 Min.   :0.000239   Min.   :2011-06-01 09:56:20.50   Min.   : 6.00  
 1st Qu.:0.259673   1st Qu.:2011-07-10 01:43:58.81   1st Qu.: 7.00  
 Median :0.539714   Median :2011-08-14 22:19:12.73   Median : 8.00  
 Mean   :0.524479   Mean   :2011-08-22 17:57:00.34   Mean   : 8.29  
 3rd Qu.:0.763614   3rd Qu.:2011-10-11 10:24:16.34   3rd Qu.:10.00  
 Max.   :0.988892   Max.   :2011-11-27 03:51:25.63   Max.   :11.00  
R> ddply(zz, .(mon), "nrow")   # so count rows by month
  mon nrow
1   6   17
2   7   22
3   8   18
4   9   15
5  10   14
6  11   14
R> 
R>set.seed(42)#fix RNG
R> zz汇总(zz)#2011年6月至11月期间的价值
瓦尔茨
最小值:0.000239最小值:2011-06-01 09:56:20.50
第一区:0.259673第一区:2011-07-10 01:43:58.81
中位数:0.539714中位数:2011-08-1422:19:12.73
平均值:0.524479平均值:2011-08-22 17:57:00.34
第三区:0.763614第三区:2011-10-11 10:24:16.34
最大值:0.988892最大值:2011-11-27 03:51:25.63
R> zz$mon summary(zz)#现在我们把这个月作为一个专栏
星期一
分钟:0.000239分钟:2011-06-01 09:56:20.50分钟:6.00
第一区:0.259673第一区:2011-07-10 01:43:58.81第一区:7.00
中位数:0.539714中位数:2011-08-14 22:19:12.73中位数:8.00
平均值:0.524479平均值:2011-08-22 17:57:00.34平均值:8.29
第三节:0.763614第三节:2011-10-11 10:24:16.34第三节:10.00
最大值:0.988892最大值:2011-11-27 03:51:25.63最大值:11.00
R> 所以按月计算行数
蒙诺
1   6   17
2   7   22
3   8   18
4   9   15
5  10   14
6  11   14
R>
您可以按月份对这些计数进行简单的柱状图分析。

解析它们(例如,通过
as.POSIXct()
)以便正确处理DateTime对象

然后使用聚合例程,例如,zoo和xts包为时间索引结构提供了聚合例程,或者ddply更一般地提供聚合例程,或者您可以使用基本R函数

你没有说你想在直方图中显示什么。算了吧?在这种情况下,这里有一个简单的例子:

R> set.seed(42)        # fix RNG
R> zz <- data.frame(val=runif(100), ts=Sys.time() - 6*31*24*60*60*runif(100))
R> summary(zz)         # values over June to Nov 2011 period
      val                 ts                        
 Min.   :0.000239   Min.   :2011-06-01 09:56:20.50  
 1st Qu.:0.259673   1st Qu.:2011-07-10 01:43:58.81  
 Median :0.539714   Median :2011-08-14 22:19:12.73  
 Mean   :0.524479   Mean   :2011-08-22 17:57:00.34  
 3rd Qu.:0.763614   3rd Qu.:2011-10-11 10:24:16.34  
 Max.   :0.988892   Max.   :2011-11-27 03:51:25.63  
R> zz$mon <- as.POSIXlt(zz$ts)$mon + 1
R> summary(zz)         # now we have the month as a column
      val                 ts                              mon       
 Min.   :0.000239   Min.   :2011-06-01 09:56:20.50   Min.   : 6.00  
 1st Qu.:0.259673   1st Qu.:2011-07-10 01:43:58.81   1st Qu.: 7.00  
 Median :0.539714   Median :2011-08-14 22:19:12.73   Median : 8.00  
 Mean   :0.524479   Mean   :2011-08-22 17:57:00.34   Mean   : 8.29  
 3rd Qu.:0.763614   3rd Qu.:2011-10-11 10:24:16.34   3rd Qu.:10.00  
 Max.   :0.988892   Max.   :2011-11-27 03:51:25.63   Max.   :11.00  
R> ddply(zz, .(mon), "nrow")   # so count rows by month
  mon nrow
1   6   17
2   7   22
3   8   18
4   9   15
5  10   14
6  11   14
R> 
R>set.seed(42)#fix RNG
R> zz汇总(zz)#2011年6月至11月期间的价值
瓦尔茨
最小值:0.000239最小值:2011-06-01 09:56:20.50
第一区:0.259673第一区:2011-07-10 01:43:58.81
中位数:0.539714中位数:2011-08-1422:19:12.73
平均值:0.524479平均值:2011-08-22 17:57:00.34
第三区:0.763614第三区:2011-10-11 10:24:16.34
最大值:0.988892最大值:2011-11-27 03:51:25.63
R> zz$mon summary(zz)#现在我们把这个月作为一个专栏
星期一
分钟:0.000239分钟:2011-06-01 09:56:20.50分钟:6.00
第一区:0.259673第一区:2011-07-10 01:43:58.81第一区:7.00
中位数:0.539714中位数:2011-08-14 22:19:12.73中位数:8.00
平均值:0.524479平均值:2011-08-22 17:57:00.34平均值:8.29
第三节:0.763614第三节:2011-10-11 10:24:16.34第三节:10.00
最大值:0.988892最大值:2011-11-27 03:51:25.63最大值:11.00
R> 所以按月计算行数
蒙诺
1   6   17
2   7   22
3   8   18
4   9   15
5  10   14
6  11   14
R>

您可以按月份对这些计数进行简单的柱状图。

如果
DF
是我们的测试数据,则取具有相同年份和月份的所有数据点的平均值,然后绘制:

# test data
DF <- data.frame(Time = as.POSIXct(Sys.Date() + 1:1000), data = 1:1000)

library(zoo)
z <- read.zoo(DF, aggregate = mean, FUN = as.yearmon)
plot(z, type = "h")
测试数据
DF如果
DF
是我们的测试数据,则取具有相同年份和月份的所有数据点的平均值,并绘制:

# test data
DF <- data.frame(Time = as.POSIXct(Sys.Date() + 1:1000), data = 1:1000)

library(zoo)
z <- read.zoo(DF, aggregate = mean, FUN = as.yearmon)
plot(z, type = "h")
测试数据
谢谢你,工作得很好。为了制作柱状图,我将“1”赋值为“data”,并设置aggregate=sum,这非常有效。为了制作直方图,我将“1”赋值为“data”,并设置aggregate=sum