如何总结 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.yearmon
。 as.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
所以我有一个制表符分隔值文件,如下所示。
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.yearmon
。 as.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