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



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

我有一个包含列的表格date open high low close volume

日期存在于所有行中。

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

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

  • 如何获得没有"NA"行的表(除date之外的所有NA)?
  • 如何获取仅包含close有数据(数字)的行的表?
  • 如何获得一个仅包含close为非零数的行的表。
  • 相反,我如何获得一个表,其中只有除了具有 NA 的close行之外一切都好的行?

我在矩阵的 Matlab 文档中看到了这一点:

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

这对于所有值都是 NAN(这绝不是我的情况,因为日期"索引"列始终有效......

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

如果我理解正确,这意味着伪代码:

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

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

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

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

mytable = rmmissing(mytable);

请注意,根据官方文档,这也适用于数组:

R = rmmissing(A) 从数组或表中删除缺失的条目。如果 A 是一个向量,然后 rmmissing 删除任何包含缺失的条目 数据。如果 A 是矩阵或表,则 rmmissing 会删除任何 包含缺失的数据。缺失值根据 A 的数据类型:

NaN - 双精度、单精度、持续时间和日历持续时间

NaT - 日期时间

"缺失" - 字符串

"未定义" - 分类

'' - 字符

{''} - 字符数组的单元格

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

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

可以在此处找到有关此论点的很好的多用途教程。

相关内容

  • 没有找到相关文章

最新更新