Вы можете использовать следующий базовый синтаксис для интерполяции отсутствующих значений в столбце фрейма данных в 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