0

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

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

日期存在于所有行中。

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

有些行的所有信息都可以,除了关闭。

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

在 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) =? [];

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

...但是对于表格和仅检查数据字段有什么类似的吗?

4

1 回答 1

2

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

mytable = rmmissing(mytable);

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

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

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

NaT - 日期时间

'缺失' - 字符串

'未定义' - 分类

' ' - 字符

{''} - 字符数组单元

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

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

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

于 2017-12-03T16:07:13.853 回答