【问题标题】:In Matlab, how do i drop na rows from a table?在 Matlab 中,如何从表中删除 na 行?
【发布时间】:2017-12-04 00:07:13
【问题描述】:

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

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

日期存在于所有行中。

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

有些行的所有信息都正常,除了关闭。

  • 如何获得没有“NA”行的表(NA 除了date)?
  • 如何获得一个表,其中只有close 有数据的行(数字)?
  • 如何获得一个表,其中只有close 是非零数字的行。
  • 相反,我如何获得一个表,其中只有除 close 行具有 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(这从来不是我的情况,因为日期“索引”列始终有效......)

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

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

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

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

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

【问题讨论】:

标签: matlab na matlab-table


【解决方案1】:

如果您使用的是Matlab R2016b 或更高版本,您只需:

mytable = rmmissing(mytable);

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

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

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

NaT - 日期时间

'缺失' - 字符串

'未定义' - 分类

' ' - 字符

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多