循环以重组时间序列的数据

时间:2019-12-24 04:37:24

标签: r loops dataframe

我有一个数据框,需要对其进行重组以进行时间序列分析。我有ITEMS的销售数据,其中日期是YEAR_MONTH的值(例如2014_06)。但是,我不在乎日期。我真正关心的是销售第一,第二,第N个月。问题在于,不同的商品在不同的时间有第一个月的销售,所以我的数据框看起来像这样:

ITEMS  YEAR_MONTH  QUANTITY
111      2014_01      0
111      2014_02      12
111      2014_03      7
111      2014_04      1
132      2014_01      0
132      2014_02      0
132      2014_03      6
132      2014_04      6

我需要的是一个数据框,该数据框包含以非零销售额的第一个YEAR_MONTH开头的行,并按顺序对其进行标签(例如MONTH_COUNTER,1、2、3,N) 。上面的示例数据帧将是:

ITEMS  MONTH_COUNTER  QUANTITY
111          1           12
111          2           7
111          3           1
132          1           6
132          2           6

这似乎是一个相对简单的循环任务,但是这远远超出了我的专业知识,我一直在努力寻找其他答案。

1 个答案:

答案 0 :(得分:1)

使用dplyr,我们可以删除0 QUANTITYgroup_by ITEMSYEAR_MONTH的行,计算{{1 }},并为每个sum创建一个QUANTITY

MONTH_COUNTER

在基数R中,我们可以使用ITEMS对数据求和,library(dplyr) df %>% filter(QUANTITY > 0) %>% group_by(ITEMS, YEAR_MONTH) %>% summarise(QUANTITY = sum(QUANTITY)) %>% mutate(MONTH_COUNTER = row_number()) # ITEMS MONTH_COUNTER QUANTITY # <int> <int> <int> #1 111 1 12 #2 111 2 7 #3 111 3 1 #4 132 1 6 #5 132 2 6 可以删除具有0个值的条目,而aggregate可以创建subset

ave