Исключить пустоту и NA в R
Возможный дубликат:
R - удалить строки с NA в файле data.frame
У меня есть dataframe с именем sub.new с несколькими столбцами в нем. И я пытаюсь исключить любую ячейку, содержащую NA
или blank space
"
".
Я попытался использовать subset()
, но он нацелился на определенный столбец. Нужно ли вообще просканировать весь файл данных и создать подмножество, в котором ни одна ячейка не является NA
или blank space
?
В приведенном ниже примере должна сохраняться только первая строка:
# 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
Любые предложения? Благодаря
Ответы
Ответ 1
Хорошей идеей является установка всех "" (пустых ячеек) на NA до дальнейшего анализа.
Если вы читаете свой ввод из файла, это хороший выбор, чтобы отбросить все "" на NA:
foo <- read.table(file="Your_file.txt", na.strings=c("", "NA"), sep="\t") # if your file is tab delimited
Если вы уже загрузили свою таблицу, вы можете действовать следующим образом:
foo[foo==""] <- NA
Затем, чтобы сохранить только строки без NA, вы можете просто использовать na.omit()
:
foo <- na.omit(foo)
Или сохранить столбцы без NA:
foo <- foo[, colSums(is.na(foo)) == 0]
Ответ 2
Не знаю точно, какой тип данных у вас есть, поэтому я предоставляю общий ответ.
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