如何每周汇总未完成的第一周和上周?
How to aggregate weekly with uncomplete first and last week?
我想按周汇总一个值。有时第一周或最后一周的时间会少于 7 天。在下面的示例中,数据从 2016-01-01 开始,但该周的最低日期是 2015-12-27。所以每周总和是基于两天而不是七天。我知道这种行为是完全合乎逻辑的,但我希望第一周和上周(可能包含不到 7 天的数据)在图中不会显示为低值。
我怎样才能做到这一点?我应该省略第一周和最后一周吗?我应该在这里使用平均值吗?怎么样?
expenses <- data_frame(
date=seq(as.Date("2016-01-01"), as.Date("2016-12-31"), by=1),
amount=rgamma(length(date), shape = 2, scale = 20))
plot_df <- expenses %>%
mutate(Week = floor_date(date, "week")) %>%
group_by(Week) %>%
summarize(exp_sum = sum(amount))
ggplot(data = plot_df,
aes(x = as.Date(Week), y = exp_sum)) +
geom_line() +
geom_point() +
scale_x_date(date_breaks = "1 week", date_labels = "%W")
Plot Example
由于期间不包括相同的天数,我的第一个建议是删除它们,为此你应该只 select 你的数据库减去第一行和最后一行。这个真的很简单,一行就搞定了。
plot_df <- plot_df[-c(1,nrow(plot_df)),]
第二种方法是将所有值的平均值相加。但是,这应该反映在结果中。
plot_df[c(1,nrow(plot_df)),"exp_sum"] <- mean(plot_df$exp_sum)
我最后的尝试是分配它之后或之前的值:
plot_df[1,"exp_sum"] <- plot_df[2, "exp_sum"]
plot_df[nrow(plot_df), "exp_sum"] <- plot_df[nrow(plot_df)-1, "exp_sum"]
正如我告诉过你的,我会删除它们。
我想按周汇总一个值。有时第一周或最后一周的时间会少于 7 天。在下面的示例中,数据从 2016-01-01 开始,但该周的最低日期是 2015-12-27。所以每周总和是基于两天而不是七天。我知道这种行为是完全合乎逻辑的,但我希望第一周和上周(可能包含不到 7 天的数据)在图中不会显示为低值。 我怎样才能做到这一点?我应该省略第一周和最后一周吗?我应该在这里使用平均值吗?怎么样?
expenses <- data_frame(
date=seq(as.Date("2016-01-01"), as.Date("2016-12-31"), by=1),
amount=rgamma(length(date), shape = 2, scale = 20))
plot_df <- expenses %>%
mutate(Week = floor_date(date, "week")) %>%
group_by(Week) %>%
summarize(exp_sum = sum(amount))
ggplot(data = plot_df,
aes(x = as.Date(Week), y = exp_sum)) +
geom_line() +
geom_point() +
scale_x_date(date_breaks = "1 week", date_labels = "%W")
Plot Example
由于期间不包括相同的天数,我的第一个建议是删除它们,为此你应该只 select 你的数据库减去第一行和最后一行。这个真的很简单,一行就搞定了。
plot_df <- plot_df[-c(1,nrow(plot_df)),]
第二种方法是将所有值的平均值相加。但是,这应该反映在结果中。
plot_df[c(1,nrow(plot_df)),"exp_sum"] <- mean(plot_df$exp_sum)
我最后的尝试是分配它之后或之前的值:
plot_df[1,"exp_sum"] <- plot_df[2, "exp_sum"]
plot_df[nrow(plot_df), "exp_sum"] <- plot_df[nrow(plot_df)-1, "exp_sum"]
正如我告诉过你的,我会删除它们。