J'ai déterminé comment identifier tous les modèles uniques d'observations manquantes dans un ensemble de données. Maintenant, je voudrais sélectionner toutes les lignes de cet ensemble de données avec un modèle donné d'observations manquantes. Je voudrais le faire de façon itérative de sorte que s'il y a n modèles d'observations manquantes dans l'ensemble de données, je me retrouve avec n ensembles de données contenant chacun seulement un modèle d'observations manquantes.en utilisant R pour sélectionner des lignes dans l'ensemble de données avec des observations manquantes correspondantes
Je sais comment faire, mais ma méthode n'est pas très efficace et n'est pas générale. J'espère apprendre une approche plus efficace et plus générale parce que mes ensembles de données réelles sont beaucoup plus grandes et plus variables que dans l'exemple ci-dessous.
Voici un exemple de jeu de données et le code que j'utilise. Je ne prends pas la peine d'inclure le code que j'ai utilisé pour créer la matrice zzz à partir de la matrice dd, mais je peux ajouter ce code si cela peut aider.
dd <- matrix(c(
1, 0, 1, 1,
NA, 1, 1, 0,
NA, 0, 0, 0,
NA, 1,NA, 1,
NA, 1, 1, 1,
0, 0, 1, 0,
NA, 0, 0, 0,
0,NA,NA,NA,
1,NA,NA,NA,
1, 1, 1, 1,
NA, 1, 1, 0),
nrow=11, byrow=T)
zzz <- matrix(c(
1, 1, 1, 1,
NA, 1, 1, 1,
NA, 1,NA, 1,
1,NA,NA,NA
), nrow=4, byrow=T)
for(jj in 1:dim(zzz)[1]) {
ddd <-
dd[
((dd[, 1]%in%c(0,1) & zzz[jj, 1]%in%c(0,1)) |
(is.na(dd[, 1]) & is.na(zzz[jj, 1]))) &
((dd[, 2]%in%c(0,1) & zzz[jj, 2]%in%c(0,1)) |
(is.na(dd[, 2]) & is.na(zzz[jj, 2]))) &
((dd[, 3]%in%c(0,1) & zzz[jj, 3]%in%c(0,1)) |
(is.na(dd[, 3]) & is.na(zzz[jj, 3]))) &
((dd[, 4]%in%c(0,1) & zzz[jj, 4]%in%c(0,1)) |
(is.na(dd[, 4]) & is.na(zzz[jj, 4]))),]
print(ddd)
}
Les 4 ensembles de données résultant dans cet exemple sont:
a)
1 0 1 1
0 0 1 0
1 1 1 1
b)
NA 1 1 0
NA 0 0 0
NA 1 1 1
NA 0 0 0
NA 1 1 0
c)
NA 1 NA 1
d)
0 NA NA NA
1 NA NA NA
Y at-il une méthode plus générale et plus efficace de faire la même chose? Dans l'exemple ci-dessus, les 4 jeux de données résultants ne sont pas sauvegardés, mais je les sauvegarde avec mes données réelles.
Nous vous remercions de vos conseils.
Mark Miller
Merci à vous deux. Les deux réponses donnent le résultat que j'espérais et sont très utiles. Mark Miller –