R에서 시프트 값을 계산하는 방법(예제 포함)


R의 dplyr 패키지에 있는 lag() 함수를 사용하여 지연 값을 계산할 수 있습니다.

이 함수는 다음 기본 구문을 사용합니다.

오프셋(x, n=1, …)

금:

  • x : 값의 벡터
  • n : 지연할 위치 수

다음 예에서는 실제로 이 함수를 사용하여 이동된 값을 계산하는 방법을 보여줍니다.

예: R에서 이동된 값 계산

연속 10일 동안 매장의 판매 건수를 표시하는 다음과 같은 데이터 프레임이 R에 있다고 가정해 보겠습니다.

 #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

결과를 해석하는 방법은 다음과 같습니다.

  • 매출 열에 이전 값이 없으므로 오프셋 열의 첫 번째 값은 NA 입니다.
  • 오프셋 열의 두 번째 값은 판매 열의 이전 값이므로 18 입니다.
  • 오프셋 열의 세 번째 값은 판매 열의 이전 값이므로 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() 함수를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다