Как я могу определить, исходят ли пропущенные значения в переменных из одной и той же переменной ID?

#r #na #missing-data

#r #na #отсутствует-данные

Вопрос:

У меня есть огромный набор данных анкеты. Глядя на подмножество элементов, я вижу, что для каждого из элементов (скажем, var1: var50) существует 25 NAS. Хотя вполне вероятно, что каждый из этих 25 NAS поступает от одних и тех же участников по разным пунктам, мне нужно на самом деле убедиться, что это правда.

Мне удалось сделать это довольно утомительным способом, и я ищу более элегантное решение проблемы.

Вот рабочий пример моего решения в R:

 ID <- 1:10
var1 <- c(1,2,3,2,1,NA,1,3,2,NA)
var2 <- c(2,1,3,1,2,NA,3,2,1,NA)

df <- data.frame(ID,var1,var2)
df[which(is.na(df$var1 amp; df$var2)),]$ID
 

Как вы можете видеть, мне нужно было бы записать все имена отдельных переменных, что может быть очень утомительно, когда речь идет о 50 или более пунктах анкеты.

Ответ №1:

Вы можете попробовать этот способ.

Таким образом, вы можете вычислить, сколько NA содержится в каждой строке:

 n_na <- rowSums(is.na(df[,-1])) 
 

Затем вы можете увидеть, какой идентификатор имеет все NAS, а какой только некоторые.

 # all NAs
df[n_na == (ncol(df)-1), "ID"]
#>  6 10

# some NAs
df[n_na > 0, "ID"]
#>  6 10

# some but not all
df[n_na > 0 amp; n_na < (ncol(df)-1), "ID"]
#> integer(0)
 

Это довольно масштабируемо, если у вас есть много переменных для обработки.


Где df :

 ID <- 1:10
var1 <- c(1,2,3,2,1,NA,1,3,2,NA)
var2 <- c(2,1,3,1,2,NA,3,2,1,NA)

df <- data.frame(ID,var1,var2)
 

Комментарии:

1. Большое вам спасибо, это экономит так много времени. Это работает очень хорошо.

Ответ №2:

Существует пакет под названием DataExplorer, и он может пригодиться для больших наборов данных. После установки DataExplorer просто загрузите библиотеку

 library(DataExplorer)
 

Как только вы загрузите его, вы можете просто использовать plot_missing
Ниже приведен код

 plot_missing(dataframe)
 

Как только вы запустите его, вы сможете увидеть количество, а также визуализацию

Самое приятное то, что вы можете использовать его в любом фрейме данных, если вам нужен код python для этой библиотеки, у меня это тоже есть, я работаю над созданием пакета на python.

Также вы можете использовать этот пакет для других EDAвведите описание изображения здесь