从1月20日开始,我有13个销售点,间隔为28天。这给了我13个数据点。如何将其转换为R
的月销售额(近似值)答案 0 :(得分:1)
你可以,例如以下列方式组合aggregate
函数和months
函数。 months
函数返回给定日期的月份。在这种情况下,aggregate
函数会将每个月的销售额相加。
# Create some toy data
set.seed(1)
df <- data.frame(date = as.Date("2016-01-20") + 0:12*20,
sales = runif(13))
head(df)
# date sales
#1 2016-01-20 0.26550866
#2 2016-02-09 0.37212390
#3 2016-02-29 0.57285336
#4 2016-03-20 0.90820779
#5 2016-04-09 0.20168193
#6 2016-04-29 0.89838968
# Create the month names and numbers
df$month_num <- format(df$date, format = "%m")
df$month_lex <- months(df$date)
head(df)
# date sales month_num month_lex
#1 2016-01-20 0.26550866 01 januar
#2 2016-02-09 0.37212390 02 februar
#3 2016-02-29 0.57285336 02 februar
#4 2016-03-20 0.90820779 03 marts
#5 2016-04-09 0.20168193 04 april
#6 2016-04-29 0.89838968 04 april
# Aggregate by month number to get correct sorting
aggregate(sales ~ month_lex*month_num, sum, data = df)
# month_lex month_num sales
#1 januar 01 0.26550866
#2 februar 02 0.94497726
#3 marts 03 0.90820779
#4 april 04 1.10007162
#5 maj 05 0.94467527
#6 juni 06 1.28991184
#7 juli 07 0.06178627
#8 august 08 0.38253133
#9 september 09 0.68702285
您可以在month_lex*
电话中遗漏aggregate
,但不会传递月份名称。
请忽略我是丹麦系统的事实。如果您想要更具体的答案,我想您应该提供一个显示您的输入和期望输出的最小数据示例。
编辑:更新以容纳@UweBlock评论。