Dropping NaN observations from Matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hey There.
So i have a matrix that has a person ID for the first column, then data in the rows for each. What i need to do is i have identified that there are some observations that are NaN, so i need to write a code that identifies which person ID have NaN observations, so that i can drop those observations from the data.
Any help could be appreciated
0 comentarios
Respuestas (2)
Walter Roberson
el 23 de En. de 2019
With R2016b or later see https://www.mathworks.com/help/matlab/ref/rmmissing.html
0 comentarios
Kevin Phung
el 23 de En. de 2019
Editada: Kevin Phung
el 23 de En. de 2019
if you had a matrix A and wanted to search for NaNs in each row
nanRows =[];
for i = 1:size(A,1)
if any(isnan(A(i,:))) % for each row, if any of the elements contain a NaN
nanRows(i) = i;% store that index
end
end
A(nanRows,:) = []; %remove those IDs from your matrix
if your matrix is of cell arrays, then replace parentheses with {}.
edit: before you run A(nanRows,:) =[] , you can check which IDs had Nans with just A(nanRows,1)
2 comentarios
Walter Roberson
el 23 de En. de 2019
No loop needed.
A(any(isnan(A),2),:) = [];
Kevin Phung
el 23 de En. de 2019
never noticed any() can take two arguments, that's neat! Thanks Walter.
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!