Remove rows with NaN from a table

조회 수: 86 (최근 30일)
alpedhuez
alpedhuez 2018년 6월 13일
댓글: Blake 2019년 9월 19일
I have a table T. T has some rows with NaN. I would like to remove any rows with NaN in any entry. Please advise.

채택된 답변

Paolo
Paolo 2018년 6월 13일
Use rmmissing :
T = table([38;43;38;40;49],[71;NaN;64;67;64],[176;163;131;NaN;119])
T =
Var1 Var2 Var3
____ ____ ____
38 71 176
43 NaN 163
38 64 131
40 67 NaN
49 64 119
rmmissing(T) =
Var1 Var2 Var3
____ ____ ____
38 71 176
38 64 131
49 64 119
  댓글 수: 2
Jonathan Beard
Jonathan Beard 2019년 4월 26일
This treats empty and nan equivalently. If you know the column that contains nans for which you want to remove the corresponding rows of you can use something like this.
T = T(find(~isnan(T.ColumnWithSomeNans)), :);
Walter Roberson
Walter Roberson 2019년 4월 26일
Only numeric values can be nan (or not), and numeric values in a table cannot be empty: the table-reading process fills them in with a definite value (typically nan.)
You would need to go back to the original file (if it is text) or use activex or .NET talking to Excel in order to determine whether a location is empty rather than nan.

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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2018년 6월 13일
T( any(ismissing(T),2), :) = [];
  댓글 수: 4
Walter Roberson
Walter Roberson 2018년 6월 13일
rmmissing is good, and I did not know about it. I voted for Paolo's answer, but I left mine as an alternative solution.
Blake
Blake 2019년 9월 19일
Walter thanks:
For some reason, Pablo's answer didn't work on my data which had mixed data types, but yours did.

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

카테고리

Help CenterFile Exchange에서 Data Type Identification에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by