Delete rows with NaN records

803 visualizaciones (últimos 30 días)
Meh
Meh el 12 de Mzo. de 2012
Respondida: Manuel Aboy el 28 de Dic. de 2022
How can I delete rows which have NaN on one of the column.

Respuesta aceptada

Jan
Jan el 12 de Mzo. de 2012
X = rand(10, 10);
X(X < 0.1) = NaN;
disp(X);
X(any(isnan(X), 2), :) = [];
Or do you mean exactly one NaN in a row?
X(sum(isnan(X), 2) == 1, :) = [];
  4 comentarios
chocho
chocho el 8 de Mzo. de 2017
_hi bro in my case i have NA and i want to delete it and keep the Lines which have NA inside
example:
0.255898 NA 0.257966
0.180000 RNASE 0.389999
0.892222 NA 0.458888
0.155523 GNAS 0.892133
*output wanted *
0.180000 RNASE 0.389999
0.155523 GNAS 0.892133
Note: Command i tried is isempty(strfind(l,'NA')) but it delete everything !
Jan
Jan el 8 de Mzo. de 2017
Dear chocho phD: Please post some code which creates your input in proper Matlab syntax. It is tedious to guess the type of your data. While "NA" must be a string, the rest of this thread concerned NaN, which is a double number.
Again: Please open a new thread for a new question. Then please post the complete code. "isempty(strfind(l,'NA'))" is only a hint, but we cannot see, where what is deleted by which command.
A bold guess:
C = {0.255898, 'NA', 0.257966; ...
0.180000, 'RNASE', 0.389999; ...
0.892222, 'NA', 0.458888; ...
0.155523, 'GNAS', 0.892133};
Key = C(:,2);
keep = ~cellfun('isempty', strfind(Key, 'NA')) & ~strcmp(Key, 'NA');
Wanted = C(keep, :)
Now this comment has no relation to my answer or to the original question. You cannot vote or accept this solution. So actually Meh's thread has been "highjacked".

Iniciar sesión para comentar.

Más respuestas (3)

Chris Turnes
Chris Turnes el 7 de Mzo. de 2017
Not that this question needed another answer, but, you can also check out the rmmissing function that was introduced in R2016b. If you combine this with standardizeMissing, you can convert your 'GNAs' strings to a standard missing indicator, and then remove the rows with rmmissing.

carmen
carmen el 12 de Mzo. de 2012
check out the isnan() functioion. the following code looks like a workaround but it works:
A=[1 2 3;nan 4 5;nan 6 nan];
B=A(sum(isnan(A),2)==0);
B %returns the only nan-free row of A: [1 2 3]
hf
  1 comentario
Ahmad Alsayed
Ahmad Alsayed el 22 de Nov. de 2021
A=[1 2 3;nan 4 5;nan 6 nan]
A = 3×3
1 2 3 NaN 4 5 NaN 6 NaN
B=A(sum(isnan(A),2)==0,:);
B %returns the only nan-free row of A: [1 2 3]
B = 1×3
1 2 3

Iniciar sesión para comentar.


Manuel Aboy
Manuel Aboy el 28 de Dic. de 2022
mpg = mpg(~ismissing(mpg));

Categorías

Más información sobre System Commands en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by