Как использовать na.rm в R (с примерами)


Вы можете использовать аргумент na.rm = TRUE , чтобы исключить пропущенные значения при расчете описательной статистики в R.

#calculate mean and exclude missing values
mean(x, na. rm = TRUE )

#calculate sum and exclude missing values 
sum(x, na. rm = TRUE )

#calculate maximum and exclude missing values 
max(x, na. rm = TRUE )

#calculate standard deviation and exclude missing values 
sd(x, na. rm = TRUE )

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

Пример 1: Использование na.rm с векторами

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

#define vector with some missing values
x <- c(3, 4, 5, 5, 7, NA, 12, NA, 16)

mean(x)

[1] NA

sum(x)

[1] NA

max(x)

[1] NA

sd(x)

[1] NA

Каждая из этих функций возвращает значение NA .

Чтобы исключить пропущенные значения при выполнении этих вычислений, мы можем просто включить аргумент na.rm = TRUE следующим образом:

#define vector with some missing values
x <- c(3, 4, 5, 5, 7, NA, 12, NA, 16)

mean(x, na. rm = TRUE )

[1] 7.428571

sum(x, na. rm = TRUE )

[1] 52

max(x, na. rm = TRUE )

[1] 16

sd(x, na. rm = TRUE )

[1] 4.790864

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

Пример 2: Использование na.rm с фреймами данных

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

#create data frame
df <- data.frame(var1=c(1, 3, 3, 4, 5),
 var2=c(7, 7, NA, 3, 2),
 var3=c(3, 3, NA, 6, 8),
 var4=c(1, 1, 2, 8, NA))

#view data frame
df

 var1 var2 var3 var4
1 1 7 3 1
2 3 7 3 1
3 3 NA NA 2
4 4 3 6 8
5 5 2 8 NA

Мы можем использовать функцию apply() для вычисления описательной статистики для каждого столбца во фрейме данных и использовать аргумент na.rm = TRUE для исключения пропущенных значений при выполнении этих вычислений:

#calculate mean of each column
apply(df, 2, mean, na. rm = TRUE )

var1 var2 var3 var4 
3.20 4.75 5.00 3.00 

#calculate sum of each column
apply(df, 2, sum, na. rm = TRUE )

var1 var2 var3 var4 
 16 19 20 12 

#calculate max of each column
apply(df, 2, max, na. rm = TRUE )

var1 var2 var3 var4 
 5 7 8 8 

#calculate standard deviation of each column
apply(df, 2, sd, na. rm = TRUE )

 var1 var2 var3 var4 
1.483240 2.629956 2.449490 3.366502

И снова мы смогли успешно завершить каждый расчет, исключив пропущенные значения.

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

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

Как использовать is.null в R
Как использовать na.omit в R
Как использовать is.na в R