R에서 그룹별 이동 평균을 계산하는 방법


시계열 분석에서 이동 평균은 여러 이전 기간의 평균 값을 나타냅니다.

다음 기본 구문을 사용하여 R에서 그룹 이동 평균을 계산할 수 있습니다.

 library (dplyr)
library (zoo)

#calculate moving average by group
df %>%
  group_by(variable1)
  mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))

이 특정 예에서는 변수1 로 그룹화된 변수2 의 3기간 이동 평균을 계산합니다.

이 코드는 dplyr 패키지의 group_by() 함수와 Zoo 패키지의 Rollmean() 함수를 사용합니다.

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

예: R에서 그룹별 이동 평균 계산

서로 다른 두 매장에서 연속적으로 며칠 동안 제품 판매를 보여주는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.

 #create data frame
df <- data. frame (store=rep(c(' A ', ' B '), each= 7 ),
                 sales=c(4, 4, 3, 5, 6, 5, 7, 4, 8, 7, 2, 5, 4, 6))

#view data frame
df

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

다음 구문을 사용하여 각 매장의 3일 이동 평균 매출 값을 표시하는 Moving_avg3 이라는 새 열을 만들 수 있습니다.

 library (dplyr)
library (zoo)

#calculate 3-day moving average of sales, grouped by store
df %>%
  group_by(store) %>%
  mutate(moving_avg3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

# A tibble: 14 x 3
# Groups: store[2]
   store sales moving_avg3
           
 1 A 4 NA   
 2 A 4 NA   
 3 to 3 3.67
 4 to 5 4   
 5 to 6 4.67
 6 to 5 5.33
 7 to 7 6   
 8 B 4 NA   
 9 B 8 NA   
10 B 7 6.33
11 B 2 5.67
12 B 5 4.67
13 B 4 3.67
14 B 6 5

참고 : Rollmean() 함수의 k 값은 이동 평균을 계산하는 데 사용된 이전 기간 수를 제어합니다.

Moving_avg3 열에는 이전 3개 기간의 이동 평균 판매액이 표시됩니다.

예를 들어, 매장 A의 처음 3일 동안의 매출 이동 평균은 다음과 같이 계산됩니다.

3일 이동평균 = (4 + 4 + 3) / 3 = 3.67

매장 A의 향후 3일 동안의 매출 이동 평균은 다음과 같이 계산됩니다.

3일 이동평균 = (4 + 3 + 5) / 3 = 4

등등.

이동 평균에 사용할 이전 기간이 충분하지 않았기 때문에 각 매장의 처음 두 이동 평균 값은 NA 입니다.

추가 리소스

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

R에서 여러 열을 그리는 방법
R의 열을 평균하는 방법
R에서 그룹당 평균을 계산하는 방법

의견을 추가하다

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