R에서 이동 평균을 계산하는 방법(예 포함)


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

R에서 이동 평균을 계산하는 가장 쉬운 방법은 Zoo 패키지의 Rollmean() 함수를 사용하는 것입니다.

 library (dplyr)
library (zoo)

#calculate 3-day rolling average
df %>%
  mutate(rolling_avg = rollmean(values, k= 3 , fill=NA, align=' right '))

이 특정 예에서는 Values 열에 대한 3 일 이동 평균을 계산합니다.

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

예: R에서 이동 평균 계산

연속 10일 동안 제품 판매량을 보여주는 다음과 같은 데이터 프레임이 R에 있다고 가정해 보겠습니다.

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   day sales
1 1 25
2 2 20
3 3 14
4 4 16
5 5 27
6 6 20
7 7 12
8 8 15
9 9 14
10 10 19

다음 구문을 사용하여 데이터 프레임의 각 행에 이전 3일 동안의 이동 평균 매출 값을 표시하는 avg_sales3 이라는 새 열을 만들 수 있습니다.

 library (dplyr)
library (zoo)

#calculate 3-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

   day sales avg_sales3
1 1 25 NA
2 2 20 NA
3 3 14 19.66667
4 4 16 16.66667
5 5 27 19.00000
6 6 20 21.00000
7 7 12 19.66667
8 8 15 15.66667
9 9 14 13.66667
10 10 19 16.00000

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

avg_sales3 열에는 이전 3개 기간의 이동 평균 매출 값이 표시됩니다.

예를 들어, 19.66667 의 첫 번째 값은 다음과 같이 계산됩니다.

3일 이동평균 = (25 + 20 + 14) / 3 = 19.66667

mutate() 함수 내에서 여러 개의 rollmean() 함수를 사용하여 여러 이동 평균을 한 번에 계산할 수도 있습니다.

예를 들어, 다음 코드는 3일 및 4일 매출 이동 평균을 계산하는 방법을 보여줍니다.

 library (dplyr)
library (zoo)

#calculate 3-day and 4-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '),
         avg_sales4 = rollmean(sales, k= 4 , fill=NA, align=' right '))

   day sales avg_sales3 avg_sales4
1 1 25 NA NA
2 2 20 NA NA
3 3 14 19.66667 NA
4 4 16 16.66667 18.75
5 5 27 19.00000 19.25
6 6 20 21.00000 19.25
7 7 12 19.66667 18.75
8 8 15 15.66667 18.50
9 9 14 13.66667 15.25
10 10 19 16.00000 15.00

avg_sales3avg_sales4 열에는 각각 3일 및 4일 이동 평균 매출이 표시됩니다.

추가 리소스

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

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

의견을 추가하다

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