Retrait “NA” les valeurs dans R (pour une raison qui na.omettre et complète.les cas ne fonctionne que sur une seule variable...)
La première partie de cette mission est d'importer des données provenant d'une autre adresse http du site; les données contiennent des huit variables avec de 1339 observations. Quatre de ces variables (l'âge, la taille, le poids, l'igf1) contiennent des NA les valeurs à l'intérieur (NOTE: les autres variables peuvent également avoir NA valeurs, mais je ne suis pas concerné avec eux). J'ai besoin d'éliminer le NA les valeurs de ces quatre variables: c'est là que j'ai du mal.
Voici ce que j'ai à ce jour:
#imports dataset from internet
importData <- read.table("http://people.sc.fsu.edu/~jburkardt/datasets/iswr/juul2.csv", sep=',', header=T)
#inspects the data:
str(importData)
Fondamentalement, je veux enlever TOUS les NA des valeurs dans l'âge, la taille, du poids et de l'igf1. Je vais savoir que je suis le succès quand j'ai 858 observations restantes.
Trois variables (taille, le poids, l'igf1) contiennent le FACTEUR type d'informations. L'une des variables (âge) contient des informations numériques. J'ai été incapable de réussir la mise en œuvre complète.les cas et/ou na.omettre à travers eux: ces fonctions ne semblent fonctionner sur $âge, où ils éliminent les cinq NA valeurs (mais ne pas toucher les autres variables)
J'ai besoin d'aide découpage de la NA des valeurs dans les autres variables. Encore une fois, quand je suis fait, je devrais avoir 858 observations.
- Bienvenue DONC! Vous devriez essayer de fournir une reproductible exemple. Quant à votre question, quand vous dites "supprimer", tu veux dire: (a) supprimer les lignes contenant
NA
dans tous les quatre? (b) supprimer les lignes contenantNA
dans l'un d'eux? ou (c) modifier laNA
à une autre valeur (imputation)? - J'ai parfois réussi à convertir NA en chaîne de caractères "NA" sans s'en rendre compte, causer toutes sortes de problèmes en aval. Vérifiez que vous n'avez pas pu le même.
- Merci à vous, Hugh. À votre question, je veux dire (A) supprimer les lignes contenant NA dans l'ensemble des quatre variables. Je veux supprimer les lignes entièrement, par opposition à remplacer les valeurs.
- Peut-on voir
str(data)
? (complete.cases
ne devrait pas laisserNA
s dans l'une des colonnes, ce qui n'est pas tout à fait ce que vous voulez, mais il semble que vous avez d'autres problèmes.) - Merci Hugues et Richard. Veuillez voir les modifications ci-dessus.
- Vous avez la réponse à votre appel à l'
str
. Toutes les valeurs sont entre guillemets, et de R les interprète comme des facteurs, non pas comme des chiffres.NA
est juste un facteur de niveau, pas un réelNA
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que votre fichier de données contient toutes les valeurs entre guillemets, comme ceci:
Lorsque R lit, il prend toutes les valeurs comme des chaînes de caractères, qui, par défaut, représenter en tant que facteurs. Le
NA
s sont juste pris comme étiquette pour un niveau de ces facteurs. Vous pouvez voir cela avecstr
:Afin de lire vos données sans effectuer facteurs, qui lit tous les numériques:
et maintenant supprimer
NA
s:Pourquoi ne pas rendre les choses beaucoup moins stressant et lire la
.txt
version des données à la place? Je l'ai trouvé dans la liste de données sur la même page que le.csv
. Il n'est pas espacés anormalement comme le.csv
fichier et il n'y a pas de bidouiller avecread.csv
arguments (ce que j'ai fait pendant un bon moment avant de trouver l'autre fichier).Lire dans vos données à l'aide de
as.is=TRUE
etna.strings = c(NA, "NA", " NA"))
. Votre fichier a des espaces entre les champs qui sont considérés comme une partie du champ.Si vous souhaitez supprimer les lignes où tout des colonnes sélectionnées sont
NA
utilisationcomplete.cases
:Si vous souhaitez supprimer uniquement les lignes où tous des colonnes sélectionnées sont
NA
, utilisezrowSums
:Cette isolés les quatre colonnes, les tests s'ils sont
NA
, et pour chaque ligne calcule combien sontNA
, en ne retournant que ceux qui ont moins de 4NA
s dans chaque ligne.age
NA et ils ont seulement troisNA
s dans les colonnes.)Si vous êtes à la lecture des données à partir d'un fichier, utilisez le lire.option de la table ci-dessous:
Si vous conditionnellement créé NAs, comme:
assurez-vous que vous ne l'utilisez jamais cité ("NA").