Ежемесячный временной ряд в R - PullRequest
1 голос
/ 27 ноября 2011

У меня есть фрейм данных с 2M временными метками Unix, и я хочу сделать ежемесячную гистограмму этого. Какие-либо предложения? спасибо

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Если DF - это наши тестовые данные, то возьмите среднее значение по всем точкам данных, имеющим один и тот же год и месяц, которые дают объект зоопарка z, и постройте его:

# 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")
0 голосов
/ 27 ноября 2011

Проанализируйте их (например, с помощью 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> 

, и вы можете составить простую гистограмму этих подсчетов по месяцам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...