从第三季度开始,如何将时间序列中的季度数据转换为年度数据?

发布于 2025-01-11 18:22:12 字数 353 浏览 0 评论 0原文

我试图首先将我的 CSV(excel)数据转换为时间序列,该时间序列分为几个季度,但从第 3 季度开始。然后,我尝试将数据聚合为每年,如下所示:

model_Tesla = ts(tesla_model$sales, start=c(2017,3), frequency=4)

tesla_annual=aggregate(model_Tesla, FUN=sum, nfrequency=1)

但是,当我运行它时,它的值年度数据全部错误。另外,它说新的 ts tesla_annual 于 2017.5 开始,于 2020.5 结束,但事实并非如此。它实际上于 2021 年第四季度结束。我该如何修复它?任何帮助将不胜感激。

I am trying to first convert my CSV (excel) data into time series which is split into quarters but starts on quarter 3. Then, I am trying to aggregate the data into yearly as follows:

model_Tesla = ts(tesla_model$sales, start=c(2017,3), frequency=4)

tesla_annual=aggregate(model_Tesla, FUN=sum, nfrequency=1)

However, when I run it the values for the annual data are all wrong. Also, it says the new ts tesla_annual starts on 2017.5 and ends on 2020.5 when that is not true. It actually ends in 2021 quarter 4. How can I fix it? Any help will be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天暗了我发光 2025-01-18 18:22:12

如果您出于特定原因不需要 ts,您可能会发现包 {lubridate} 很有用。它提供了许多方便的包装器用于时间和日期操作。对于您的情况,以下代码可能会有所帮助:


library(lubridate)

df %>% 
mutate(quarters = seq(from = ymd('2017/3/1'), 
                      to = ymd('2021/12/31'),
                      by = 'quarters')

## ymd is for year/month/day; try dmy etc.

If you don't need ts for a particular reason, you might find package {lubridate} useful. It offers a number of convenient wrappers for time and date manipulation. In your case, the following code might help along:


library(lubridate)

df %>% 
mutate(quarters = seq(from = ymd('2017/3/1'), 
                      to = ymd('2021/12/31'),
                      by = 'quarters')

## ymd is for year/month/day; try dmy etc.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文