R でデータを週ごとにグループ化する方法 (例あり)
引数「 %V 」を指定してベース R のstrftime()関数を使用すると、R でデータを週ごとにグループ化できます。
この関数は次の基本構文を使用します。
df$week_num <- strftime(df$date, format = " %V ")
次の例は、この関数を実際に使用する方法を示しています。
例: R で週ごとにデータをグループ化する
R に、さまざまな日付の商品の総売上高を示す次のデータ フレームがあるとします。
#create data frame df <- data. frame (date=as. Date (c('1/8/2022', '1/9/2022', '2/10/2022', '2/15/2022', '3/5/2022', '3/22/2022', '3/27/2022'), '%m/%d/%Y'), sales=c(8, 14, 22, 23, 16, 17, 23)) #view data frame df dirty date 1 2022-01-08 8 2 2022-01-09 14 3 2022-02-10 22 4 2022-02-15 23 5 2022-03-05 16 6 2022-03-22 17 7 2022-03-27 23
次のコードを使用して、各日付の週番号を表示する列を追加できます。
#add column to show week number
df$week_num <- strftime(df$date, format = " %V ")
#view updated data frame
df
date sales week_num
1 2022-01-08 8 01
2 2022-01-09 14 01
3 2022-02-10 22 06
4 2022-02-15 23 07
5 2022-03-05 16 09
6 2022-03-22 17 12
7 2022-03-27 23 12
注: ドキュメントによると、 %V% が日付数値を計算する方法は次のとおりです。「その年の週番号 (週の最初の月曜日) を 10 進数で [01,53]」とします。 1 月 1 日を含む週に新年が 4 日以上ある場合、その週は第 1 週とみなされます。そうでない場合は、前年の最終週となり、次の週が第 1 週となります。
この新しい列を作成したら、週番号に基づいて値をグループ化できます。
たとえば、次のコードを使用して、週ごとにグループ化された売上の合計を計算できます。
library (dplyr)
#calculate sum of sales, grouped by week
df %>%
group_by(week_num) %>%
summarize(total_sales = sum(sales))
# A tibble: 6 x 2
week_num total_sales
1 01 22
2 06 22
3 07 23
4 09 16
5 12 40
結果から次のことがわかります。
- 第 1 週の売上の合計は22でした。
- 第 6 週の売上の合計は22でした。
- 第 7 週の売上の合計は23でした。
等々。
別のメトリックを使用してデータを集計することもできます。
たとえば、次のコードを使用して、週ごとにグループ化された平均売上を計算できます。
library (dplyr)
#calculate mean of sales, grouped by week
df %>%
group_by(week_num) %>%
summarize(mean_sales = mean(sales))
# A tibble: 5 x 2
week_num mean_sales
1 01 11
2 06 22
3 07 23
4 09 16
5 12 20
結果から次のことがわかります。
- 第 1 週の平均売上は11でした。
- 第 6 週の平均売上は22でした。
- 7 週目の平均売上は23でした。
等々。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。
R でデータを月ごとにグループ化する方法
Rで日付から年を抽出する方法
Rで日付から月を抽出する方法
R でデータフレームを日付で並べ替える方法