在 Matlab 中,如何从 table 中删除 na 行?

In Matlab, how do i drop na rows from a table?

在 Matlab 中,如何删除数据中所有 NA 或部分 NA 的行。

我有一个 table 列 date open high low close volume

该日期存在于所有行中。

有些行除了带有 NA 的日期之外还有所有其他列。

有些行的所有信息都正常,除了收盘价。

我看到 this in Matlab documentation 的矩阵:

>> X = [10; 0.04500; 0; NaN; NaN];
>>X(isnan(X)) = []
ans = [10; 0,04500, 0]

And this for all values being NAN(这从来不是我的情况,因为日期 'index' 列始终有效...)

A(~any(~isnan(A), 2),:)=[];

如果我理解正确的话伪代码的意思是:

all in matrix A(hasno(numeric(A), INCOLUMNS), FORALLCOLUMNS) =? [];

这导致所有行的其中一列中至少有一个数字。

...但是对于 table 和仅检查数据字段是否有类似的东西?

如果您使用的是 Matlab R2016b 或更高版本,要删除缺少值的 table 行,您需要做的就是:

mytable = rmmissing(mytable);

请注意,这也适用于数组 official documentation:

R = rmmissing(A) removes missing entries from an array or table. If A is a vector, then rmmissing removes any entry that contains missing data. If A is a matrix or table, then rmmissing removes any row that contains missing data. Missing values are defined according to the data type of A:

NaN - double, single, duration, and calendarDuration

NaT - datetime

'missing' - string

'undefined' - categorical

' ' - char

{''} - cell of character arrays

如果您使用的是早期版本,请选择:

mytable = mytable(~any(ismissing(mytable),2),:);

可以找到一个很好的多用途教程来阅读这个论点 here