2017-12-20 13 views
0

週ごとに値を合計したい。時には、最初の週または最後の週は7日未満になります。下の例では、データは2016-01-01で始まりますが、その週のフロア日付は2015-12-27です。したがって、週合計は7日ではなく2日に基づいています。私はこの行動が完全に論理的であることを理解していますが、最初と最後の週(データの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

+0

https://stackoverflow.com/questions/22439540/how-to-get-week-numbers-from-datesのように週番号を取得してから集計してください – abhiieor

+0

週数が増えると問題が増えますか?つまり、年が異なるためdata.frameには "53" "01" "02" "03" ... "48" "49" "50" ' –

答えて

1

このためにあなただけのデータベースマイナス最初と最後の行を選択する必要があり、私の最初の勧告は、それらを削除することです同じ日数は含まれません。これは本当にシンプルで、行単位で行われます。

plot_df <- plot_df[-c(1,nrow(plot_df)),] 

第2の方法は、すべての値の平均値を加算することです。しかし、これは結果に反映されるべきである。私はあなたに言ったよう

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"] 

、私はそれらを消去します:

plot_df[c(1,nrow(plot_df)),"exp_sum"] <- mean(plot_df$exp_sum) 

私の最後の試みは、後、またはその前にある値を割り当てることです。

関連する問題