将TimeSeriesAggregate与日历月份对齐

时间:2018-10-17 14:43:27

标签: wolfram-mathematica

我一直在尝试获取财务指数的平均月度值,但无法使用TimeSeriesAggregate使它们与日历月份完全吻合。

例如

Data2018AgM = TimeSeriesAggregate[FinancialData["HP", "2018"], "Month"];

Column[Data2018AgM]

获得Jan1-Feb1,Feb2-Mar1,Mar2-Apr1等的值。

{{1, "Month"}, {-1, "Day"}}

获得Jan1-Jan31,Feb1-Feb27,Feb28-Mar27等的值。

“EndOfMonth”

获得Jan1-Jan30,Jan31-Feb27,Feb28-Mar30等的值。

我需要使数据与Jan1-Jan31,Feb1-Feb28,Mar1-Mar31,Apr1-Apr30(...)窗口完全匹配,但无法。我一定缺少一种简单而优雅的方式来做到这一点。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我尝试了几种不同的窗口规格,但无法获得groupby整个月的平均值。起初我认为这可能是因为TimeSeriesAggregateFinancialData而不是{YYYY, MM, DD}的形式返回了日期,所以我尝试了

DateObject

但这仍然是不正确的。似乎是data = {DateObject[First[#]], Last[#]} & /@ FinancialData["HP", "2018"]; TimeSeriesAggregate[data, "Month"] 中的错误。

这是一种按月计算平均值的方法

TimeSeriesAggregate

评估为

byMonth = GroupBy[data, DateValue[First[#], "MonthName"] &, #[[All, 2]] &];
meanByMonth = Mean[#] & /@ byMonth