Найдите индекс строк в фрейме данных со значением NA

Предположим, что у нас есть следующий фрейм данных:

>  dataset1
      x
  1   1
  2   2
  3   3
  4   NA
  5   5

Я хочу придумать команду R, которая вычисляет индекс строки фрейма данных с 1 столбцом, который содержит значение «NA». В частности, в приведенном выше примере dataset1 такая команда вернет 4, потому что «NA» появляется в 4-й строке фрейма данных. Как я могу это сделать? спасибо!


person Jin-Dominique    schedule 10.11.2013    source источник
comment
см. ?which, ?is.na ...   -  person Ben Bolker    schedule 11.11.2013


Ответы (4)


Как предложил Бен Болкер, вы можете использовать как which, так и is.na, например:

> which(is.na(dataset1), arr.ind=TRUE)
  row col
4   4   1  # NA is in row 4 and column 1
person Jilber Urbina    schedule 10.11.2013
comment
или which(is.na(dataset1[[1]])), так как ОП сказал, что им нужен ответ 4 - person Ben Bolker; 11.11.2013

Альтернативный подход с использованием функций из экосистемы tidyverse:

> dataset1 %>%
     rowid_to_column() %>%
     filter(is.na(x))
  rowid  x
1     4 NA
person Ashirwad    schedule 22.05.2019

создать newdataset1 таблицу, сформированную после удаления строк с отсутствующими значениями столбцов из dataset1 использовать -which(is.na)

   newdataset1<-dataset1[-which(is.na(dataset1$x)),]
person JasmineSamant    schedule 16.12.2017

Этот код возвращает кадр данных, который содержит только строки с пустыми значениями в your_dataframe your_dataframe[unique(which(is.na(your_dataframe), arr.ind=TRUE)[,1]),]

или используя dplyr

your_dataframe %>% dplyr::setdiff(., na.omit(.))

person Mariusz Cieciura    schedule 24.07.2021