主要内容

rmmissing

删除缺失的条目

说明

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

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

  • NaN - doublesingledurationcalendarDuration

  • NaTdatetime

  • <missing>string

  • <undefined>categorical

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

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

您可以通过将清洗离群数据任务添加到实时脚本中,以交互方式使用 rmmissing 功能。

示例

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

示例

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

示例

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

示例

示例

全部折叠

创建一个包含缺失条目的向量,并删除每个缺失条目。

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

     1     3     6

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

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

A = table([missing; "Jones"; "Lopez"],[45; 32; NaN],categorical([missing; "CA"; "MA"]),[6051; 7234; NaN], ...
    VariableNames=["Name" "Age" "State" "ID"])
A=3×4 table
      Name       Age       State        ID 
    _________    ___    ___________    ____

    <missing>     45    <undefined>    6051
    "Jones"       32    CA             7234
    "Lopez"      NaN    MA              NaN

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

R = rmmissing(A)
R=1×4 table
     Name      Age    State     ID 
    _______    ___    _____    ____

    "Jones"    32      CA      7234

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

R2 = rmmissing(A,DataVariables=["Age" "ID"])
R2=2×4 table
      Name       Age       State        ID 
    _________    ___    ___________    ____

    <missing>    45     <undefined>    6051
    "Jones"      32     CA             7234

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

R3 = rmmissing(A,DataVariables=@isnumeric)
R3=2×4 table
      Name       Age       State        ID 
    _________    ___    ___________    ____

    <missing>    45     <undefined>    6051
    "Jones"      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 = 1×10 logical array

   1   0   0   0   0   0   0   0   1   0

创建一个表并删除定义为 -99 的缺失条目。创建一个逻辑变量表 loc,该表指示要删除的缺失条目的位置。

A = [1; 4; 9; -99; 3];
B = [9; 0; 6; 2; 1];
C = [-99; 4; 2; 3; 8];
T = table(A,B,C)
T=5×3 table
     A     B     C 
    ___    _    ___

      1    9    -99
      4    0      4
      9    6      2
    -99    2      3
      3    1      8

loc = T==-99
loc=5×3 table
      A        B        C  
    _____    _____    _____

    false    false    true 
    false    false    false
    false    false    false
    true     false    false
    false    false    false

然后,使用 MissingLocations 名称-值参量指定 rmmissing 的已知缺失条目位置。除了已删除缺失条目的数据,还返回一个逻辑向量,指示删除了哪些行。

[R,TF] = rmmissing(T,MissingLocations=loc)
R=3×3 table
    A    B    C
    _    _    _

    4    0    4
    9    6    2
    3    1    8

TF = 5×1 logical array

   1
   0
   0
   1
   0

创建一个具有一些缺失行时间的时间表。然后,通过指定 rmmissing 不应对任何时间表数据变量进行操作,来删除时间戳缺失的行。

T=timetable(hours([1 NaN 2 3 NaN 4])',[1 NaN NaN 2 5 1]')
T=6×1 timetable
     Time     Var1
    ______    ____

    1 hr        1 
    NaN hr    NaN 
    2 hr      NaN 
    3 hr        2 
    NaN hr      5 
    4 hr        1 

R = rmmissing(T,DataVariables={})
R=4×1 timetable
    Time    Var1
    ____    ____

    1 hr      1 
    2 hr    NaN 
    3 hr      2 
    4 hr      1 

输入参数

全部折叠

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

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

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

数据类型: single | double | char | string | table | timetable | cell | categorical | datetime | duration | calendarDuration

沿其进行运算的数组维度,指定为 1 或 2。如果不指定维度,则默认值是大小不等于 1 的第一个数组维度。

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

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

    rmmissing(A,1) row removal

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

    rmmissing(A,2) column removal

对于表或时间表输入数据,不支持 dim,并且分别对每个表或时间表变量进行运算。

名称-值参数

全部折叠

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

示例: rmmissing(A,DataVariables=["Temperature" "Altitude"]) 会删除 A 中在 TemperatureAltitude 变量中包含缺失数据的行

删除一个行或列所需的最小缺失条目数,指定为非负整数标量。默认值为 1。如果一个行或列中的缺失条目数小于 MinNumMissing 的值,则 rmmissing 不删除该行或列并保留缺失值。

示例: rmmissing(A,MinNumMissing=6)

自 R2024b 起

已知缺失条目指示符,指定为逻辑向量或矩阵,或具有逻辑变量的表或时间表。值为 1 (true) 的元素表示 A 中缺失条目的位置。值为 0 (false) 的元素表示非缺失条目。

当您指定 MissingLocations 时,rmmissing 不使用标准缺失值。而是会用已知缺失条目指示符中的元素来定义缺失条目。

如果 MissingLocations 是向量或矩阵,其大小必须与 A 相同。如果 MissingLocations 是表或时间表,它必须包含与要对其进行操作的输入表变量的大小和名称相同的逻辑变量。

数据类型: logical | table | timetable

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

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

索引方案要指定的值示例

变量名称

  • 字符串标量或字符向量

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

  • pattern 对象

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

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

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

变量索引

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

  • 由数字组成的向量

  • 一个 logical 向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0 (false) 值。

  • 3 - 表中的第三个变量

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

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

函数句柄

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

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

变量类型:

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

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

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

输出参量

全部折叠

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

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

数据类型: logical

提示

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

替代功能

实时编辑器任务

您可以通过将清洗缺失数据任务添加到实时脚本中,以交互方式使用 rmmissing 功能。

Clean Missing Data task in the Live Editor

扩展功能

全部展开

版本历史记录

在 R2016b 中推出

全部展开