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

답변 (2개)

Kevin Phung
Kevin Phung 2019년 1월 23일
편집: Kevin Phung 2019년 1월 23일

0 개 추천

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

No loop needed.
A(any(isnan(A),2),:) = [];
Kevin Phung
Kevin Phung 2019년 1월 23일
never noticed any() can take two arguments, that's neat! Thanks Walter.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 NaNs에 대해 자세히 알아보기

태그

질문:

2019년 1월 23일

댓글:

2019년 1월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by