我有一个数据框,需要对其进行重组以进行时间序列分析。我有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
这似乎是一个相对简单的循环任务,但是这远远超出了我的专业知识,我一直在努力寻找其他答案。
答案 0 :(得分:1)
使用dplyr
,我们可以删除0 QUANTITY
,group_by
ITEMS
和YEAR_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