R でシフト値を計算する方法 (例付き)
R のdplyrパッケージのlag()関数を使用して、ラグ値を計算できます。
この関数は次の基本構文を使用します。
オフセット(x, n=1, …)
金:
- x : 値のベクトル
- n : 遅延する位置の数
次の例は、この関数を使用して実際にシフトされた値を計算する方法を示しています。
例: R のシフトされた値の計算
R に、連続 10 日間にわたる店舗の販売数を示す次のデータ フレームがあるとします。
#create data frame
df <- data. frame (day=1:10,
sales=c(18, 10, 14, 13, 19, 24, 25, 29, 15, 18))
#view data frame
df
day sales
1 1 18
2 2 10
3 3 14
4 4 13
5 5 19
6 6 24
7 7 25
8 8 29
9 9 15
10 10 18
dplyr パッケージのlag()関数を使用して、各行に前日の売上を表示するラグ列を作成できます。
library (dplyr)
#add new column that shows sales for previous day
df$previous_day_sales <- dplyr::lag(df$sales, n= 1 )
#view updated data frame
df
day sales previous_day_sales
1 1 18 NA
2 2 10 18
3 3 14 10
4 4 13 14
5 5 19 13
6 6 24 19
7 7 25 24
8 8 29 25
9 9 15 29
10 10 18 15
結果を解釈する方法は次のとおりです。
- sales 列には前の値がないため、offset 列の最初の値はNAです。
- offset 列の 2 番目の値は、sales 列の前の値であるため、 18です。
- offset 列の 3 番目の値は、sales 列の前の値であるため、 10です。
等々。
また、 lag()関数のn引数の値を変更して、以前の位置の異なる数に対するラグ値を計算することもできます。
library (dplyr)
#add new column that shows sales for two days prior
df$previous_day_sales <- dplyr::lag(df$sales, n= 2 )
#view updated data frame
df
day sales previous_day_sales
1 1 18 NA
2 2 10 NA
3 3 14 18
4 4 13 10
5 5 19 14
6 6 24 13
7 7 25 19
8 8 29 24
9 9 15 25
10 10 18 29
注: リード列を作成するには、 lag()関数の代わりに dplyr パッケージのlead()関数を使用します。
追加リソース
次のチュートリアルでは、R の他の一般的な関数の使用方法について説明します。
dplyr で n() 関数を使用する方法
dplyr で across() 関数を使用する方法
dplyrでrelocate()関数を使用する方法
dplyrでslice()関数を使用する方法