我一直在尝试获取财务指数的平均月度值,但无法使用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(...)窗口完全匹配,但无法。我一定缺少一种简单而优雅的方式来做到这一点。
任何帮助将不胜感激。
答案 0 :(得分:1)
我尝试了几种不同的窗口规格,但无法获得groupby
整个月的平均值。起初我认为这可能是因为TimeSeriesAggregate
以FinancialData
而不是{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