Dplyr을 사용하여 그룹당 오프셋을 계산하는 방법


dplyr 패키지를 사용하여 R에서 그룹 이동 값을 계산하려면 다음 구문을 사용할 수 있습니다.

 df %>%
  group_by(var1) %>%
  mutate(lag1_value = lag(var2, n= 1 , order_by=var1))

참고 : mutate() 함수는 지연된 값이 포함된 데이터 프레임에 새 변수를 추가합니다.

다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.

예시: dplyr을 사용하여 그룹별로 이동된 값 계산

서로 다른 날짜에 서로 다른 두 매장의 매출을 보여주는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.

 #create data frame
df <- data. frame (store=c('A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'),
                 sales=c(7, 12, 10, 9, 9, 11, 18, 23))

#view data frame
df

  blind sales
1 to 7
2 B 12
3 to 10
4 B 9
5 to 9
6 B 11
7 to 18
8 B 23

다음 코드를 사용하여 각 매장의 지연된 판매 값을 표시하는 새 열을 만들 수 있습니다.

 library (dplyr)

#calculate lagged sales by group
df %>%
  group_by(store) %>%
  mutate(lag1_sales = lag(sales, n= 1 , order_by=store))

# A tibble: 8 x 3
# Groups: store[2]
  store sales lag1_sales
1 to 7 NA
2 B 12 NA
3 to 10 7
4 B 9 12
5 to 9 10
6 B 11 9
7 to 18 9
8 B 23 11

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

  • 매장 A의 매출에 대한 이전 값이 없기 때문에 lag1_sales 의 첫 번째 값은 NA 입니다.
  • B 매장 매출에 대한 이전 값이 없기 때문에 lag1_sales 의 두 번째 값은 NA 입니다.
  • lag1_sales 의 세 번째 값은 A 매장의 이전 판매 값이므로 7 입니다.
  • lag1_sales 의 네 번째 값은 B 매장의 이전 판매 값이므로 12 입니다.

등등.

lag() 함수에서 n 값을 변경하여 사용되는 지연 수를 변경할 수도 있습니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 계산을 수행하는 방법을 설명합니다.

dplyr을 사용하여 누적 합계를 계산하는 방법
R에서 그룹별 합계를 계산하는 방법
R에서 그룹당 평균을 계산하는 방법

의견을 추가하다

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