web-dev-qa-db-fra.com

Exclure Blank et NA dans R

Duplicata possible:
R - supprimer les lignes contenant des NA dans data.frame

J'ai un dataframe nommé sub.new avec plusieurs colonnes dedans. Et j'essaie d'exclure toute cellule contenant NA ou un blank space "".
J'ai essayé d'utiliser subset(), mais il cible une colonne spécifique conditionnelle. Existe-t-il de toute façon une analyse de l'ensemble de la trame de données et la création d'un sous-ensemble qu'aucune cellule n'est NA ou blank space?

Dans l'exemple ci-dessous, seule la première ligne doit être conservée:

# ID               SNP             ILMN_Strand   Customer_Strand
ID1234              [A/G]          TOP           BOT
Non-Specific        NSB (Bgnd)     Green
Non-Polymorphic     NP (A)         Red
Non-Polymorphic     NP (T)         Purple
Non-Polymorphic     NP (C)         Green
Non-Polymorphic     NP (G)         Blue
Restoration         Restore        Green

Aucune suggestion? Merci

14
lusketeer

Une bonne idée est de régler tous les "" (cellules vides) sur NA avant toute analyse supplémentaire.

Si vous lisez votre entrée à partir d'un fichier, c'est un bon choix pour convertir tous les "" en NA:

foo <- read.table(file="Your_file.txt", na.strings=c("", "NA"), sep="\t") # if your file is tab delimited

Si vous avez déjà chargé votre table, vous pouvez agir comme suit:

foo[foo==""] <- NA

Ensuite, pour ne conserver que les lignes sans NA, vous pouvez simplement utiliser na.omit():

foo <- na.omit(foo)

Ou pour conserver les colonnes sans NA:

foo <- foo[, colSums(is.na(foo)) == 0] 
53
Ali

Je ne sais pas exactement quel type de jeu de données vous avez, alors je donne une réponse générale.

x <- c(1,2,NA,3,4,5)
y <- c(1,2,3,NA,6,8)
my.data <- data.frame(x, y)
> my.data
   x  y
1  1  1
2  2  2
3 NA  3
4  3 NA
5  4  6
6  5  8
# Exclude rows with NA values
my.data[complete.cases(my.data),]
  x y
1 1 1
2 2 2
5 4 6
6 5 8
11
Andrej