2015-09-14 3 views
0

импортировать таблицу в R с помощью:удаления строк матрицы R, содержащие NaN

mydata = read.csv("mydata.csv") 

Некоторые из ячеек таблицы не определены, преобразовать их в NaN.

mydata[mydata == "<undefined>"] <- NA 

Я хотел бы найти индексов строк, содержащих NaN для столбца 4 и удалить соответствующие строки (по всей таблице).

Не могли бы Вы помочь мне?

В MATLAB Я хотел бы сделать:

idx_rows_nan = find(isnan(mydata(:,4))); 
mydata(idx_rows_nan,:)=[]; 
+2

только фильтр вместо удаления: 'm [! Is.na (m [, 4]),]' –

+1

'NA' - это не то же самое, что' NaN'. – Roland

+0

@Roland Я имею в виду не число ... – gabboshow

ответ

1

Попробуйте is.na() (с точкой)

mydata[!is.na(mydata[,4]),] 

В двух шагах, можно было бы сначала определить строки, содержащие NA в колонке 4 путем определения логической вектор na_rows:

na_rows <- is.na(mydata[,4]) 

Номера строк св колонке 4 может быть отображен с which(na_rows)

Затем можно удалить эти строки с

mydata <- mydata[!na_rows,] 

Если вы хотите определить NaN записей вместо NA, функция is.nan() может быть использована.

+0

Привет, спасибо. Я хотел бы иметь двухэтапный подход, так как меня интересует просмотр индексов. – gabboshow

+2

Я бы не использовал '-', так как это может возвращать строки' 0', если в столбце 4 нет NaN. Возможно, было бы лучше использовать '!'. В качестве примера, 'mydata <- data.frame (Col1 = 1: 4); mydata [-is.nan (mydata [, 1]) ,, drop = FALSE] # [1] Col1 # <0 rows> (или 0 -length row.names); mydata [! is.nan (mydata [, 1]) ,, drop = FALSE] ' – akrun

+0

Как указал Роланд, я должен найти значения NA ... не NaN ... извините ... есть функция is.missing? – gabboshow

Смежные вопросы