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에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.