Remove rows with NaN from a table
223 次查看(过去 30 天)
显示 更早的评论
采纳的回答
Paolo
2018-6-13
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
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
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
2018-6-13
T( any(ismissing(T),2), :) = [];
4 个评论
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
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 Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!