如何总结 5 年的月度值? (适合单变量时间序列)

How to sum up monthly values for 5 years? (To fit a univariate time serie)

所以我有一个制表符分隔值文件,如下所示。

 Date       Value1
 2010-01-01    2 
 2010-01-02    0.2 
 2010-02-03    5 
 2010-02-07    2 
 2010-03-03    1 
 . . .
 2015-01-01    1.0

我需要帮助来汇总每个月的所有值。 所以在这种情况下,1 月将是 2.2,2 月 7.0 等

我目前在 R studio 工作,这需要对我的时间序列完成。 R中是否有任何内置命令?或者这可以在 Java 或 Python 中轻松完成吗?

预期结果如下所示:

 Date      Value1
 2010-01     2.2 
 2010-02     7  
 2010-03     1 
 . . .
 2015-01     1.0

在 R 中这是一个简单的聚合问题。

aggregate(Value1 ~ cbind(Date = format(as.Date(Date), "%Y-%m")), df, sum)
#      Date Value1
# 1 2010-01    2.2
# 2 2010-02    7.0
# 3 2010-03    1.0
# 4 2015-01    1.0

或者为了方便起见,您可以使用 zoo 包中的 as.yearmonas.yearmon 的优点是它按日历顺序排序而不只是一个字符串(如 format 给出),因为基数 R 没有日期 class 不包含一天

aggregate(Value1 ~ Date, transform(df, Date = as.yearmon(Date)), sum) 
#       Date Value1
# 1 Jan 2010    2.2
# 2 Feb 2010    7.0
# 3 Mar 2010    1.0
# 4 Jan 2015    1.0

或者您可以将整个对象转换为 zoo class

z <- read.zoo(df) 
aggregate(z, as.yearmon, sum)

或者如果你的数据很大,你也可以结合 data.table

library(data.table)
setDT(df)[, list(Value1 = sum(Value1)), by = list(Date = as.yearmon(Date))]
#        Date Value1
# 1: Jan 2010    2.2
# 2: Feb 2010    7.0
# 3: Mar 2010    1.0
# 4: Jan 2015    1.0