Dataframe 如何在R中从包含部分销售额与月份的聚合数据中准备逐月时间序列数据?

Dataframe 如何在R中从包含部分销售额与月份的聚合数据中准备逐月时间序列数据?,dataframe,time-series,data-science,data-cleaning,forecasting,Dataframe,Time Series,Data Science,Data Cleaning,Forecasting,我有一个数据框架,其中包括许多部件的月度销售数据: 例如 零件号月份数量 第1部分2019年6月20日 第1部分2019年7月25日 第1部分2019年9月30日 第2部分2019年3月45 第3部分2019年8月40日 第3部分2019年11月21日 我想把这些数据转换成一个月一个月的时间序列,一旦我把它转换成一个ts对象,这使得时间序列预测更容易 月份第1部分第2部分第3部分 1月0日 2月0日 3月0日45 0 4月0日 5月0日 六月二十日 七月二十五日(星期五) 8月0日 9月0日30

我有一个数据框架,其中包括许多部件的月度销售数据: 例如

零件号月份数量

第1部分2019年6月20日

第1部分2019年7月25日

第1部分2019年9月30日

第2部分2019年3月45

第3部分2019年8月40日

第3部分2019年11月21日

我想把这些数据转换成一个月一个月的时间序列,一旦我把它转换成一个ts对象,这使得时间序列预测更容易

月份第1部分第2部分第3部分

1月0日

2月0日

3月0日45 0

4月0日

5月0日

六月二十日

七月二十五日(星期五)

8月0日

9月0日30 0

10月0日20

11月0日21

12月0日

对于如何在R中实现这一点,我感到非常困惑。任何解决方案都非常有用,因为我计划在R中构建一些预测模型


期待着您的来信

假设数据
DF
重复显示在末尾的注释中

首先将
DF
转换为zoo,将其按第一列拆分,并将月份列转换为yearmon类。然后将其转换为ts类,将其扩展到一月到十二月,并将任何NAs设置为0。(如果您不需要开始和结束时的0个月,请省略
yrs
窗口
行。)


行文本的图片不太有用。请撤消上一次编辑,并按照有帮助的用户在上一次编辑中概述的适当格式路径进行操作。有人能帮我吗?我不熟悉堆栈溢出。请阅读标签顶部关于如何提问的说明。在我的情况下,我已经有一个数据框,数量为数字格式,月份为as.yearmon格式。我的数据不全是文本-数量为双精度,零件号为整数,月份为字符。这几个月并不是唯一的——我们甚至可以在2019年4月和2019年2月进行第1部分和第2部分。我刚才要求解释一个例子!答案的输入是DF。线条只是为了我们能定义它。你可以把同一个月分成两部分。但是,除非在read.zoo中添加一个aggregate=参数,否则同一个月份不能在同一部分中出现两次。非常感谢-它现在可以工作了-我已经单独执行了聚合函数。我会记住read.zoo中的聚合参数部分,以便下次简化代码行。另外,我从您的代码中了解到,typeof(DF)显示它是一个列表。我必须将我的数据帧转换为相同的列表。我试着用dataframe读取.zoo,但没有;不行。直接读取数据帧和csv文件并执行zoo函数是否有替代方法?我找到了read.csv.zoo(),但我有一些错误。需要研究一下它
DF
是一个数据帧。尝试
class(DF)
。每个数据帧也是一个列表,但在这里并不相关
read.zoo
可以读取文件或数据帧。它不读取非数据帧的列表。
library(zoo)

z <- read.zoo(DF, split = 1, index = 2, FUN = as.yearmon, format = "%b %Y")
tt <- as.ts(z)
yrs <- as.integer(range(time(tt))) # start and end years
tt <- window(tt, start = yrs[1], end = yrs[2] + 11/12, extend = TRUE)
tt[is.na(tt)] <- 0
tt
         Part 1 Part 2 Part 3
Jan 2019      0      0      0
Feb 2019      0      0      0
Mar 2019      0     45      0
Apr 2019      0     20      0
May 2019      0      0      0
Jun 2019     20      0      0
Jul 2019     25      0      0
Aug 2019      0      0      0
Sep 2019     30      0      0
Oct 2019      0      0     20
Nov 2019      0      0     21
Dec 2019      0      0      0
Lines <- "Partno, Month, Qty
Part 1, Jun 2019, 20
Part 1, Jul 2019, 25
Part 1, Sep 2019, 30
Part 2, Mar 2019, 45
Part 2, Apr 2019, 20
Part 3, Oct 2019, 20
Part 3, Nov 2019, 21"
DF <- read.csv(text = Lines, strip.white = TRUE)