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 NA
s, 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 avecdata.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 lesRowNo
. 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
SiStore2df
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
RowNo
s je veux, parce que laRowNo
colonne n'a pas deNA
s. La commande que vous avez posté ne supprime que les lignes avec justeNa
s. 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 deStore2df
pour le 1er 2 les demandes, carStore2df
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.
Vous devez vous connecter pour publier un commentaire.
Ou
Ou
de données
Mise à jour
À déposer les lignes avec tous les
NA
sis.na(Store2)
donne un index logique des éléments sont manquants ouNA
!
réduit à néant la logique de l'index c'est à direTRUE
devientFALSE
et vice-versarowSums
le code ci-dessus donne la somme des éléments qui sontnot NA
dans chaque ligne!
Nier ci-dessus donneNous avons voulu tomber ces lignes qui sont
all NA's
ou0 non NAs
. Donc!
nouveauSous-ensemble à l'aide de la logique de l'indice de
Update2
Si vous avez deux
rowNo
, c'est à dire celui que vous avez stockées séparément avant de les supprimer de la NA les lignes et la seconde après que vous avez supprimé le NAs.Update3
Avec vos nouvelles demandes, permettez-moi d'essayer de nouveau:
Première étape
Économie
RowNo
comme vecteur distinct (je ne suis pas sûr de savoir pourquoi vous avez besoin de cela)Deuxième étape
Supprimer les lignes avec toutes les NA des valeurs dans
Store2
de données.image et l'enregistrer commeStore2df
Troisième étape
Supprimer mêmes lignes de Store2new1 vecteur de Store2df de données.cadre
Quatrième étape
Je ne pense pas vraiment que la quatrième étape ou de tiers est requise, sauf si vous souhaitez supprimer plusieurs lignes, ce qui n'est pas clair à partir du poste.
dput
de sortie comme je l'ai montré pourStore2
et aussi de la sortie attendue comme je n'ai pas de comprendre clairement à partir de votre description.df2
estStore2
et de votre sortie?UserID
s. Afin de mener à bien l'opération de suppression de lignes avec toutes lesNA
s, j'ai dû enlever les id d'utilisateur en premier. Il ya certains utilisateurs n'ayant aucune information à tous. Comment puis-je supprimer leUserID
s après avoir retiré les lignes avec toutes lesNA
valeurs? Je ne veux pas copier et coller plus d'un millier de lignes en fonction de l'index.Store2df
dataset, vous avez des lignes 1,2, 5,6,7,8 après la suppression de lignes avec toutes lesNA's
. Maintenant, je suppose que, vous souhaitiez supprimer quelques lignes plus? Par exemple, les lignes 1 et 2 ont des valeurs manquantes dans toutes les colonnes sauf 1 et 2 de la colonne. Il est un peu moins clair. Pourriez-vous montrer le résultat attendu? Ou est-ce que vous avez voulu avoir une séquence de numéros de ligne au lieu de 1,2, 5,6,.... Si c'est le casrow.names(Store2df) <- 1:nrow(Store2df)
.RowNo
. Votre exemple est correct, il y a quelquesRowNo
s qui n'ont pas de données. La fonction indiquée au-dessus dewhich(rowSums(is.na(Store2df))==ncol(Store2df))
montre les lignes qui ne contiennent pas de données APRÈS la prise de la colonneRowNo
. Je ne veux pas créer un index, copier/coller le numéro de tous, et d'ajouter une virgule entre les deux. Est-il un moyen plus rapide?Row.No
n'est pas une colonne dans le jeu de donnéesStore2df
. Il est celui qui s'est imprimé dans votre Rstudio de l'environnement. Si vous venez de vous montrer le résultat escompté de la données présentées ci-dessus, je peux essayer. Les Descriptions peuvent prêter à confusion.RowNo
était une colonne au début j'ai pris. Après l'exécution deStore2[!!rowSums(!is.na(Store2)),]
une colonne appeléeRow.No
a été créé uniquement à des spectacles dans les Rstudio de l'environnement. Je veux les mêmes lignes qui ont été supprimés à partir de Store2df à être supprimés dans l'originalRowNo
colonne. J'ai mis dans mon modifier le résultat attendu de ce que je veux pour les 6 premières colonnes.Store2new2
a donné un objet avec aucun des entiers.Store2New1
etStore2df$RowNo
À l'aide de la
Store2
de l'échantillon les données affichées dans la réponse fournie par @akrunOu, semblable à akrun réponse: