Как интерполировать пропущенные значения в R (включая пример)


Вы можете использовать следующий базовый синтаксис для интерполяции отсутствующих значений в столбце фрейма данных в R:

library(dplyr)
library (zoo)

df <- df %>%
 mutate(column_name = na.approx (column_name))

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: интерполяция пропущенных значений в R

Предположим, у нас есть следующий фрейм данных в R, который показывает общий объем продаж магазина за 15 дней подряд:

#create data frame
df <- data.frame(day=1:15,
 sales=c(3, 6, 8, 10, 14, 17, 20, NA, NA, NA, NA, 35, 39, 44, 49))

#view data frame
df

 day sales
1 1 3
2 2 6
3 3 8
4 4 10
5 5 14
6 6 17
7 7 20
8 8 NA
9 9 NA
10 10 NA
11 11 NA
12 12 35
13 13 39
14 14 44
15 15 49

Обратите внимание, что во фрейме данных отсутствуют данные о продажах за четыре дня.

Если мы создадим простую линейную диаграмму для визуализации продаж с течением времени, вот как это будет выглядеть:

#create line chart to visualize sales
plot(df$sales, type='o', pch= 16 , col='steelblue', xlab='Day', ylab='Sales') 

Чтобы заполнить недостающие значения, мы можем использовать функцию na. приблизительно() из пакета zoo вместе с функцией mutate() из пакета dplyr :

library(dplyr)
library (zoo)

#interpolate missing values in 'sales' column
df <- df %>%
 mutate(sales = na.approx (sales))

#view updated data frame
df

 day sales
1 1 3
2 2 6
3 3 8
4 4 10
5 5 14
6 6 17
7 7 20
8 8 23
9 9 26
10 10 29
11 11 32
12 12 35
13 13 39
14 14 44
15 15 49

Обратите внимание, что каждое из отсутствующих значений было заменено.

Если мы создадим еще одну линейную диаграмму для визуализации обновленного фрейма данных, вот как она будет выглядеть:

#create line chart to visualize sales
plot(df$sales, type='o', pch= 16 , col='steelblue', xlab='Day', ylab='Sales') 

Обратите внимание, что значения, выбранные функцией na.appro() , вполне соответствуют тренду в данных.

Дополнительные ресурсы

В следующих руководствах представлена дополнительная информация о том, как обрабатывать отсутствующие значения в R:

Как найти и подсчитать пропущенные значения в R
Как заменить пропущенные значения в R
Как использовать функцию is.na в R