L'identification des lignes de données.cadre avec seulement NA valeurs dans R

J'ai un data.frame de 15 000 observations de 34 ordinal et NA variables. Je suis l'exécution de clustering pour une étude de segmentation du marché et le besoin de lignes avec seulement NAs supprimé. Après avoir sorti le nom d'utilisateur j'ai un message d'erreur disant omettre 2099 lignes avec seulement NAs avant de clustering.

J'ai trouvé un lien pour supprimer les lignes avec toutes les NA valeurs, mais j'ai besoin d'identifier lequel de la 2099 lignes ont tous NA valeurs. Voici le lien pour la discussion en supprimant les lignes avec toutes les NA valeurs: Supprimer les Lignes avec NAs dans les données.cadre

Voici un échantillon des cinq premières observations à partir de six variables:

> head(Store2df, n=5)
  RowNo      Age Gender HouseholdIncome MaritalStatus PresenceofChildren
1     1     <NA>   Male            <NA>          <NA>               <NA>
2     2    45-54 Female            <NA>          <NA>               <NA>
3     3     <NA>   <NA>            <NA>          <NA>               <NA>
4     4     <NA>   <NA>            <NA>          <NA>               <NA>
5     5    45-54 Female        75k-100k       Married                Yes
#Making a vector
> Vector1 <- Store2df$RowNo 
#Taking out RowNo column
> Store2df$RowNo <- NULL

EDIT: j'ai mis les résultats dans un objet, mais a constaté que le projet de code, une colonne supplémentaire. En cliquant dans RStudio de l'environnement, une colonne supplémentaire appelée ligne.noms a été créé à l'étiquetage de chaque ligne avec la ligne d'origine de nom. Quelques milliers de lignes ont été supprimées et la nouvelle colonne intitulée les nouvelles lignes avec l'ancien numéro de ligne. Cependant, en regardant de la tête du nouvel objet, je ne vois pas l'étiquette de ligne. Pourquoi la ligne.les noms d'étiquette indique dans l'environnement, mais pas quand j'ai vue la tête?

#Remove all rows with only NA values
> Store2df <- Store2[!!rowSums(!is.na(Store2)),]
#View head of store2df
> head(Store2df)
    Age Gender HouseholdIncome MaritalStatus PresenceofChildren
1  <NA>   Male            <NA>          <NA>               <NA>
2 45-54 Female            <NA>          <NA>               <NA>
5 45-54 Female        75k-100k       Married                Yes
6 25-34   Male        75k-100k       Married                 No
7 35-44 Female       125k-150k       Married                Yes
8 55-64   Male        75k-100k       Married                 No

EDIT 2: j'ai mis dans le numéro de ligne/colonne userID pour garder une trace du nombre d'utilisateurs. Pour effectuer l'opération pour supprimer tous les NAs, j'ai pris la première colonne. Maintenant, j'ai besoin de garder une trace des utilisateurs, je l'ai enlevé. J'ai une liste de plus de 2000 lignes qui avaient tous NA valeurs, je ne veux pas créer un index manuellement en mettant dans chaque ligne.

Question: Comment puis-je supprimer les e-mails que le manque de données correspond à?

> #First six rows of the column RowNo
> head(Store2df$RowNo)
[1] 1 2 3 4 5 6

Je veux 2099 lignes supprimées dans la Store2df data.frame avec le RowNo inclus. Voici le script d'identifier les lignes qui sont toutes vides dans le Store2df data.frame sans RowNo.

> which(rowSums(is.na(Store2df))==ncol(Store2df))

Montrant les 6 premières lignes, numéro de ligne 3 et 4 sont supprimés.

> head(Store2df$RowNo)
[1] 1 2 5 6 7 8

Il y a 4 étapes je veux terminer:

1) Prendre RowNo colonne dans Store2df data.frame et enregistrer en tant que vecteur distinct

2) Supprimer les lignes avec toutes les NA valeurs dans Store2df data.frame

3) Supprimer les mêmes lignes de Store2new1 vector comme Store2df data.frame

4) Combiner vector et data.frame avec vector correspondant à la data.frame

  • Ce lien renvoie à la suppression de colonnes. Vouliez-vous dire ce lien? Et en quoi n'est-il pas à résoudre votre problème?
  • J'ai fait l'erreur de poster le mauvais lien, merci. Je voulais poster qu'un seul, mais avait trop d'onglets ouverts! Ce lien gouttes les lignes pour NA ils connaissent. Je ne veux pas passer par tous les 15000 lignes pour identifier 2099 ont tous NA valeurs.
  • Que voulez-vous dire "qu'ils connaissent"? Le lien ne nécessite pas de savoir qui à l'avance. Cela dit, les réponses ne sont pas tout à fait répondre à votre question, car ils supprimer les lignes avec n'importe quel NAs, non seulement avec tous les NAs
  • J'ai mal lu leurs sous-ensemble sur la complète.cas() fonction. Ils ont été de sélectionner des colonnes, pas de lignes. Je suis en train d'essayer de trouver un moyen efficace de prendre les lignes je sais à tous les NAs. Subsetting ces données.cadre pour tous les remplit les valeurs prendrait trop de temps.
  • David j'ai vérifié dans RStudio de l'Environnement. J'ai aussi remarqué une colonne supplémentaire row.names est créé, mais dans le contexte Mondial, il est dit: Store2df 3 obs. of 7 variables.
  • Davis, que je ne pouvais pas comprendre pourquoi il crée la ligne.les noms de colonne. Essayé quelques modifications, mais toujours dans RStudio environnement mondial a cette ligne.des noms.
  • Ok. Tant qu'il n'est pas afficher dans la tête, je parie que ce n'est pas une variable. Encore merci pour le suivi!
  • Davis Votre description est source de confusion. head(Store2df$RowNo) [1] 1 2 3 4 5 6 I want the same rows deleted in the Store2df data.frame deleted in the index Store2df$RowNo > head(Store2df$RowNo) [1] 1 2 5 6 7 8
  • Davis je n'ai Update2. Veuillez vérifier. Votre description est source de confusion, comme vous l'avez mentionné à propos de beaucoup de choses, j'.e Rstudio en gardant la ligne.les noms etc..
  • J'ai édité le post. S'il vous plaît laissez-moi savoir si je peux effacer quoi que ce soit. Je veux réduire la taille du vecteur RowNo en vue de la fusion avec data.frame Store2df. RowNo permettra de consulter les informations correctes dans Store2df.
  • Davis Pourriez-vous poster une nouvelle question que cette page a déjà devenu bondé avec beaucoup de commentaires. Aussi, lorsque vous postez, assurez-vous que vous utilisez dput ie. dput(head(Store2df, 6)). Dans la mise à jour, je vous ai montré un moyen de supprimer les RowNo. Mais, il semble que vous n'êtes pas la suite. Dans votre dernier jour, vous avez mentionné les 4 étapes pour terminer. Je suppose que vous avez déjà fait quelques pas terminé. Tout ceci est source de confusion.
  • Davis La 3ème et 4ème étapes que vous avez mentionnés sont source de confusion. 3) Delete same rows in Store2df$RowNo as Store2df data.frame 4) Combine vector and data.frame with vector matching the data.frame Si Store2df est un objet unique et les lignes sont déjà supprimés, je ne comprends pas comment vous pouvez vous le supprimer à nouveau.
  • désolé pour la confusion. J'ai fait un edit de changer le vecteur d'un objet distinct. Je ne peux pas enlever le RowNos je veux, parce que la RowNo colonne n'a pas de NAs. La commande que vous avez posté ne supprime que les lignes avec juste Nas. Si vous voulez, je peux reposter une autre question.
  • Davis Après l'avoir lu, encore une fois, je suppose que vous vouliez dire Store2 au lieu de Store2df pour le 1er 2 les demandes, car Store2df est celui que vous avez obtenu après la suppression de l'ena, à droite? Aussi, pour la quatrième étape, si nous avons déjà supprimé les lignes correspondantes à la fois le vecteur et le dataframe ( ici ne savent pas qui dataframe vous faites allusion), pourquoi avons-nous besoin de fusionner?
  • oui c'est vrai!
  • Davis Ok, j'ai mis à jour.

InformationsquelleAutor Scott Davis | 2014-09-01