Main Content

rmmissing

删除缺失的条目

说明

示例

R = rmmissing(A) 从数组或表中删除缺失的条目。如果 A 是向量,则 rmmissing 会删除包含缺失数据的所有条目。如果 A 是矩阵或表,则 rmmissing 会删除包含缺失数据的所有行。

缺失值的定义取决于 A 的数据类型:

  • NaN - doublesingledurationcalendarDuration

  • NaTdatetime

  • <missing>string

  • <undefined>categorical

  • {''} - 字符向量的 cell

如果 A 是表,则每个变量的数据类型定义该变量的缺失值。

示例

R = rmmissing(A,dim) 指定要沿其进行运算的 A 的维度。默认情况下,rmmissing 沿其大小不为 1 的第一个维度进行运算。

示例

R = rmmissing(___,Name,Value) 使用一个或多个名称-值参数指定用来删除缺失条目的其他参数。例如,您可以使用 rmmissing(A,'MinNumMissing',n) 删除 A 的包含至少 n 个缺失值的行。

示例

[R,TF] = rmmissing(___) 还返回与 A 中被删除的行或列对应的逻辑向量。

示例

全部折叠

创建包含 NaN 值的向量,然后删除每个 NaN

A = [1 3 NaN 6 NaN];
R = rmmissing(A)
R = 1×3

     1     3     6

从具有多个数据类型的表中删除不完整的行。

首先创建一个表,其变量包括 categoricaldoublechar 数据类型。

A = table(categorical({''; 'F'; 'M'}),[45; 32; NaN],{''; 'CA'; 'MA'},[6051; 7234; NaN],...
    'VariableNames',{'Gender' 'Age' 'State' 'ID'})
A=3×4 table
      Gender       Age      State        ID 
    ___________    ___    __________    ____

    <undefined>     45    {0x0 char}    6051
    F               32    {'CA'    }    7234
    M              NaN    {'MA'    }     NaN

删除表中包含缺失数据的任何行。

R = rmmissing(A)
R=1×4 table
    Gender    Age    State      ID 
    ______    ___    ______    ____

      F       32     {'CA'}    7234

只删除在 AgeID 表变量中包含缺失值的行。

R = rmmissing(A,'DataVariables',{'Age','ID'})
R=2×4 table
      Gender       Age      State        ID 
    ___________    ___    __________    ____

    <undefined>    45     {0x0 char}    6051
    F              32     {'CA'    }    7234

或者,使用 isnumeric 函数识别要对其执行运算的数字变量。

R = rmmissing(A,'DataVariables',@isnumeric)
R=2×4 table
      Gender       Age      State        ID 
    ___________    ___    __________    ____

    <undefined>    45     {0x0 char}    6051
    F              32     {'CA'    }    7234

创建一个包含缺失数据的矩阵,然后删除包含两个或更多缺失值的任何列(第二个维度)。返回新矩阵以及指示 A 的哪些列已被删除的逻辑行向量。

A = [NaN NaN 5 3 NaN 5 7 NaN 9 2;
     8 9 NaN 1 4 5 6 5 NaN 5;
     NaN 4 9 8 7 2 4 1 NaN 3]
A = 3×10

   NaN   NaN     5     3   NaN     5     7   NaN     9     2
     8     9   NaN     1     4     5     6     5   NaN     5
   NaN     4     9     8     7     2     4     1   NaN     3

[R,TF] = rmmissing(A,2,'MinNumMissing',2)
R = 3×8

   NaN     5     3   NaN     5     7   NaN     2
     9   NaN     1     4     5     6     5     5
     4     9     8     7     2     4     1     3

TF = 1x10 logical array

   1   0   0   0   0   0   0   0   1   0

输入参数

全部折叠

输入数据,指定为向量、矩阵、字符向量元胞数组、表或时间表。

  • 如果 Atimetable,则 rmmissing(A) 会删除 A 中包含缺失数据的所有行,还会删除对应的时间向量元素。如果时间向量包含 NaTNaN,则 rmmissing(A) 会从时间向量中删除它,还会删除 A 的对应行。

  • 如果 A 是元胞数组或包含元胞数组变量的表,则 ismissing 仅在元胞数组包含字符向量时检测缺失元素。

沿其进行运算的维度,指定 1 或 2。默认情况下,rmmissing 沿其大小不为 1 的第一个维度进行运算。

以一个 m×n 输入矩阵数组 A 为例:

  • rmmissing(A,1) 删除 A 中包含缺失数据的行。

    rmmissing(A,1) row removal

  • rmmissing(A,2) 删除 A 中包含缺失数据的列。

    rmmissing(A,2) column removal

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: rmmissing(A,'DataVariables',{'Temperature','Altitude'}) 会删除 A 中在 TemperatureAltitude 变量中包含缺失数据的行

要删除行或列所必须具有的最小缺失条目数,指定为非负标量(默认值为 1)。

示例: rmmissing(A,'MinNumMissing',6)

要对其进行操作的表变量,指定为下表中的选项之一。DataVariables 值指示要检查输入表中的哪些变量有缺失值。

表中未由 DataVariables 指定的其他变量将传递给输出,而不检查缺失值。

索引方案示例

变量名称:

  • 字符串、字符向量或元胞数组

  • pattern 对象

  • "A"'A' - 名为 A 的变量

  • ["A","B"]{'A','B'} - 两个名为 AB 的变量

  • "Var"+digitsPattern(1) - 变量名为 "Var" 后跟一个数字

变量索引:

  • 引用变量在表中位置的索引编号

  • 由数字组成的向量

  • 逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0false

  • 3 - 表中的第三个变量

  • [2 3] - 表中的第二个和第三个变量

  • [false false true] - 第三个变量

函数句柄:

  • 函数句柄,以表变量作为输入并返回逻辑标量

  • @isnumeric - 所有包含数值的变量

变量类型:

  • vartype 下标,用于选择指定类型的变量

  • vartype("numeric") - 所有包含数值的变量

示例: rmmissing(T,'DataVariables',["Var1" "Var2" "Var4"])

输出参数

全部折叠

已删除缺失条目的数据,以向量、矩阵、表或时间表的形式返回。R 的大小取决于删除的行数或列数。

已删除条目的指示符,以逻辑向量的形式返回。值 1 (true) 对应于 A 中已删除的行或列。值 0 (false) 对应于未改变的行和列。TF 的方向和大小取决于 A 和操作的维度。

数据类型: logical

提示

  • 对于作为由非字符向量组成的结构体数组或元胞数组的输入数据,rmmissing 不会删除任何条目。要从结构体数组中删除缺失的条目,请使用 structfun 函数将 rmmissing 应用于结构体中的每个字段。要删除由非字符向量组成的元胞数组中缺失的条目,请使用 cellfun 函数将 rmmissing 应用于元胞数组中的每个元胞。

扩展功能

版本历史记录

在 R2016b 中推出

全部展开