R-按时间序列完成时间频率表



考虑一个时间频表

2008-01-01 2008-01-03 2008-01-05 2008-01-06 2008-01-07 2008-01-08
         1          8          2          2          3          1

请注意,2008-01-02和2008-01-04丢失了。

预期结果看起来像:

2008-01-01 2008-01-02 2008-01-03 2008-01-04 2008-01-05 2008-01-06 2008-01-07 2008-01-08
         1          0          8          0          2          2          3          1

或以日期框架的形式:

   Time    Frequency
2008-01-01    1
2008-01-02    0
2008-01-03    8
2008-01-04    0
2008-01-05    2
2008-01-06    2
2008-01-07    3
2008-01-08    1

一个更好的选择是用指定的levels转换为factor,然后进行table

rndates <- range(dates)
table(factor(dates, levels = as.character(seq(rndates[1], rndates[2], by = "1 day"))))
#  2008-01-01 2008-01-02 2008-01-03 2008-01-04 2008-01-05 2008-01-06 2008-01-07 2008-01-08 
#        4          0          7          0          1          5          6          2 

数据

set.seed(24)
dates <- sample(as.Date(c("2008-01-01", "2008-01-03", "2008-01-05", 
    "2008-01-06", "2008-01-07", "2008-01-08")), 25, replace = TRUE)

最新更新