101 votes

Suppression des lignes vides d'un fichier de données en R

J'ai un ensemble de données avec des lignes vides. Je voudrais les supprimer :

myData<-myData[-which(apply(myData,1,function(x)all(is.na(x)))),]

Cela fonctionne bien. Mais maintenant, je voudrais ajouter une colonne dans mes données et initialiser la première valeur :

myData$newCol[1] <- -999

Error in `$<-.data.frame`(`*tmp*`, "newCol", value = -999) : 
  replacement has 1 rows, data has 0

Malheureusement, cela ne fonctionne pas et je ne comprends pas vraiment pourquoi et je ne peux pas résoudre cela. Cela a fonctionné lorsque j'ai supprimé une ligne à la fois en utilisant :

TgData = TgData[2:nrow(TgData),]

Ou quelque chose de similaire.

Cela fonctionne également lorsque j'ai utilisé seulement les 13.000 premières lignes.

Mais cela ne fonctionne pas avec mes données réelles, avec 32.000 lignes.

Qu'ai-je fait de mal ? Cela semble ne pas avoir de sens pour moi.

2voto

Ceci est similaire à certaines des réponses ci-dessus, mais avec ceci, vous pouvez spécifier si vous voulez supprimer les lignes avec un pourcentage de valeurs manquantes supérieur ou égal à un pourcentage donné (avec l'argument pct)

drop_rows_all_na <- function(x, pct=1) x[!rowSums(is.na(x)) >= ncol(x)*pct,]

x est un dataframe et pct est le seuil de données remplies de NA que vous voulez vous débarrasser.

pct = 1 signifie supprimer les lignes qui ont 100% de ses valeurs NA. pct = .5 signifie supprimer les lignes qui ont au moins la moitié de ses valeurs NA

0voto

mattador Points 51

Voici une autre réponse si vous voulez juste un enrobage de fonction pratique. De plus, bon nombre des solutions ci-dessus suppriment une ligne avec NAs, alors que celle-ci ne supprime que les lignes qui sont TOUTES des NAs.

data <- rbind(c(1,2,3), c(1, NA, 4), c(4,6,7), c(NA, NA, NA), c(4, 8, NA)) # les données échantillon
data

rmNArows<-function(d){
goodRows<-apply(d,1,function(x) sum(is.na(x))!=ncol(d))
d[goodRows,]
}

rmNArows(data)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X