Comment puis-je supprimer les observations de l'absence de données dans Stata?
J'ai des données avec des Id qui peuvent ou peuvent ne pas avoir toutes les valeurs présentes. Je veux supprimer UNIQUEMENT les observations de l'absence de données; si il y a des observations, même avec une seule valeur, je veux les garder. Par exemple, si mon jeu de données est:
ID val1 val2 val3 val4
1 23 . 24 75
2 . . . .
3 45 45 70 9
Je veux déposer uniquement l'ID 2, car il est le seul à aucune des données -- juste une ID.
J'ai essayé Statalist et Google, mais ne pouvais pas trouver quelque chose de pertinent.
Un moyen simple est d'utiliser
Désolé Aspen. Mon exemple pourrait avoir été plus clair -- les noms de variable ne sont pas linéaires.
Pour être complet, notons que les "lignes" et "documents" ne sont pas Stata-parler; le logiciel Stata terme est "observations".
Merci. J'ai édité ma question à résoudre ce problème.
drop if missing(val1-val4)
Désolé Aspen. Mon exemple pourrait avoir été plus clair -- les noms de variable ne sont pas linéaires.
missing()
retourne 1 si l'un des arguments évalue à manquantes.Pour être complet, notons que les "lignes" et "documents" ne sont pas Stata-parler; le logiciel Stata terme est "observations".
Merci. J'ai édité ma question à résoudre ce problème.
OriginalL'auteur | 2014-08-06
Vous devez vous connecter pour publier un commentaire.
Ce sera aussi avec des chaînes tant qu'ils sont vides:
Cela permet d'obtenir une liste de variables qui ne sont pas les id et les gouttes de toutes les observations qui n'ont que de l'id.
dropmiss
(SJ) est consacré à ce problème. Votre stratégie de recherche doit commencer avecsearch
dans Stata, pas sur internet.dropmiss
est certainement le chemin à parcourir. On peut re/découvrir facilement avecfindit drop observations with missing data
.Merci Nick. Le problème est résolu.
Voir aussi la mise à JOUR de ma réponse sur
missings
(SPC).OriginalL'auteur Dimitriy V. Masterov
Brian Albert Monroe est tout à fait exact que toute personne utilisant
dropmiss
(SJ) a besoin de l'installer en premier. Comme il est de l'intérêt de différentes façons de résoudre ce problème, je vais en ajouter un autre.Bien qu'il devrait être un commentaire sous la direction de Brian de réponse, je vais ajouter ici un commentaire ici comme (un) ce format est plus adapté pour montrer le code (b) le commentaire de mon code ci-dessus. Je suis d'accord que
unab
est une commande utile et ont souvent louée en public. Ici, cependant, il est inutile de Brian boucles pourrait facilement commencer quelque chose commeMise à JOUR en septembre 2015: Voir http://www.statalist.org/forums/forum/general-stata-discussion/general/1308777-missings-now-available-from-ssc-new-program-for-managing-missings pour plus d'informations sur
missings
, considéré par l'auteur à la fois à une amélioration dedropmiss
. La syntaxe dedrop
observations si et seulement si toutes les valeurs sont manquantes estmissings dropobs
.OriginalL'auteur Nick Cox
Juste une autre façon de faire qui vous aide à découvrir comment flexible de macros locales sont sans installer quoi que ce soit de supplémentaire pour Stata. J'ai rarement vu le code à l'aide des habitants de stocker des commandes ou des conditions logiques, si elle est souvent très utile.
Maintenant
dropmiss
peut être utile une fois que vous avez téléchargé et installé, mais si vous écrivez un fichier pour être utilisé par quelqu'un d'autre, sauf s'ils disposent égalementdropmiss
installé, votre code ne fonctionne pas sur leur machine.Avec cette approche, si vous supprimez les lignes de commentaires et les deux inutiles de la liste de commandes, c'est un assez lâche 5 lignes de code qui fonctionnera avec Stata hors de la boîte.
help limits
est la référence ici. Dans votre exemple,r(varlist)
vraiment contient tous les noms de variables. Vous avez juste besoin d'exécuterdisplay "`r(varlist)'"
(notez les guillemets).Comme une note de côté: si vous voulez consulter toutes les variables dans le jeu de données, vous pouvez utiliser
_all
. Par exemple,foreach vname of varlist _all { ...
. Pas besoin deunab
ici.Votre code suppose que les variables numériques.
missing()
est la voie à un critère plus général.Je pense que c'est tout de même important de noter que la remarque que j'ai faite au départ était que les macros locales peuvent stocker des conditions logiques. Dans de nombreux ensembles de données où les données sont dérivées à partir d'enquêtes, des données manquantes est souvent recodée comme un -9 ou -99, aussi la réponse "je ne sais pas" peut être enregistrée comme un -33. Il est souvent approprié de supprimer ces données pour certaines analyses, auquel cas
missing()
est insuffisante. Le code je l'affichage peut être facilement modifié à cet effet.C'est certainement une bonne pratique pour corriger les erreurs de montage. Le code que j'ai écrit peut également être modifié pour faire face à d'autres conventions sur ce qui indique un manque, mais un Stata recommandation est d'utiliser
mvdecode
dans de tels cas.OriginalL'auteur Brian Albert Monroe