主要内容

ismissing

查找缺失值

说明

TF = ismissing(A) 返回一个逻辑数组,该数组指示输入数据的哪些元素包含标准缺失值。TF 的大小与 A 的大小相同。

标准缺失值根据 A 的数据类型定义,或如果 A 是表,则根据每个变量的数据类型定义:

  • NaN - doublesingledurationcalendarDuration

  • NaTdatetime

  • <missing>string

  • <undefined>categorical

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

对于没有标准缺失值默认定义的数据类型,ismissing(A) 会返回一个与 A 大小相同的由逻辑值 0 (false) 组成的数组或表。

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

示例

TF = ismissing(A,indicator)indicator 中的值视为缺失值指示符,而忽略上述语法中列出的所有默认指示符。indicator 可以是单个指示符,也可以是多个指示符。例如,如果 Adouble 类型的数组,则 ismissing(A,[0 -99]) 会将 0 和 -99 视为缺失的数值,而不是将 NaN 视为缺失值。

示例

TF = ismissing(___,OutputFormat=format) 为上述任一语法指定表格数据的输出类型。

示例

全部折叠

创建一个包含 NaN 值的行向量 A,并确定这些值在 A 中的位置。

A = [3 NaN 5 6 7 NaN NaN 9];
TF = ismissing(A)
TF = 1×8 logical array

   0   1   0   0   0   1   1   0

创建一个包含不同数据类型的变量的表。

dblVar = [NaN; 2; 3; 4; 5; 6];
singleVar = single([1; NaN; 3; 4; 5; 6]);
cellstrVar = {'one'; 'two'; ''; 'four'; 'five'; 'six'};
categoryVar = categorical(["red"; "orange"; "yellow"; ""; "blue"; "indigo"]);
dateVar = [datetime(2015,1:4,15) NaT datetime(2015,6,15)]';
stringVar = ["a"; "b"; "c"; "d"; "e"; missing];

A = table(dblVar,singleVar,cellstrVar,categoryVar,dateVar,stringVar)
A=6×6 table
    dblVar    singleVar    cellstrVar    categoryVar      dateVar      stringVar
    ______    _________    __________    ___________    ___________    _________

     NaN           1       {'one'   }    red            15-Jan-2015    "a"      
       2         NaN       {'two'   }    orange         15-Feb-2015    "b"      
       3           3       {0×0 char}    yellow         15-Mar-2015    "c"      
       4           4       {'four'  }    <undefined>    15-Apr-2015    "d"      
       5           5       {'five'  }    blue                   NaT    "e"      
       6           6       {'six'   }    indigo         15-Jun-2015    <missing>

找出具有缺失值的元素。

ismissing 返回一个数组,对于 A 中具有缺失值的每个对应元素,该数组中对应的逻辑值均为 1。TF 的大小与 A 的大小相同。

TF = ismissing(A)
TF = 6×6 logical array

   1   0   0   0   0   0
   0   1   0   0   0   0
   0   0   1   0   0   0
   0   0   0   1   0   0
   0   0   0   0   1   0
   0   0   0   0   0   1

创建一个表,其中 'NA'''<missing>-99NaNInf 表示缺失值。然后,找出具有缺失值的元素。

dblVar = [NaN; 3; Inf; 7; 9];
int8Var = int8([1; 3; 5; 7; -99]);
cellstrVar = {'one'; 'three'; ''; 'NA'; 'nine'};
stringVar = ["A"; "C"; "E"; missing; "I"];

A = table(dblVar,int8Var,cellstrVar,stringVar)
A=5×4 table
    dblVar    int8Var    cellstrVar    stringVar
    ______    _______    __________    _________

     NaN          1      {'one'   }    "A"      
       3          3      {'three' }    "C"      
     Inf          5      {0×0 char}    "E"      
       7          7      {'NA'    }    <missing>
       9        -99      {'nine'  }    "I"      

指定缺失值指示符。ismissing 返回一个数组,对于 A 中具有缺失值的每个元素,该数组中对应的逻辑值均为 1。

id = {'NA' '' string(missing) -99 NaN Inf};
TF = ismissing(A,id)
TF = 5×4 logical array

   1   0   0   0
   0   0   0   0
   1   0   1   0
   0   0   1   1
   0   1   0   0

ismissing 将忽略字符数组中的尾随空白。因此,在将空字符向量 '' 指定为缺失值指示符后,ismissing 会将 A.cellstrVar 中的空字符向量识别为缺失值。

输入参数

全部折叠

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

  • 如果 A 是时间表,则 ismissing 仅作用于表数据,而忽略行时间向量中的 NaTNaN 值。

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

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

非标准缺失值指示符,指定为 ismissing 函数应视为缺失值的标量、向量或元胞数组。

  • 如果 A 是数组,则 indicator 必须为标量或向量。

  • 如果 A 为表或时间表,则 indicator 也可以是具有多个数据类型条目的元胞数组。

如果您未指定 indicator,则 ismissing 使用根据 A 的数据类型定义的标准缺失值指示符:

  • NaN - doublesingledurationcalendarDuration

  • NaTdatetime

  • <missing>string

  • <undefined>categorical

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

indicator 的条目会覆盖所有标准缺失值指示符。要在维护标准列表的同时指定附加指示符,请将 missing 作为元素包含在 indicator 中。

每个指示符用于标识同一个类的 A 中的缺失元素。这些指示符也与不同类的 A 中的元素匹配:

  • double 指示符也与 A 的数值条目匹配。

  • stringchar 和字符向量元胞数组指示符也与 Acategoricalstring 条目匹配。

  • single、整数和 logical 指示符也与 Adouble 条目匹配。

示例: TF = ismissing(A,0) 仅将 0 识别为缺失值。

示例: 对于分类数组 A,除了 categorical 值的标准缺失值之外,TF = ismissing(A,["Unset" missing]) 还将 Unset 识别为缺失值。

示例: 对于表 T,除了每个表变量类型的标准缺失值,TF = ismissing(T,{-99 missing}) 还将 -99 识别为缺失值。

表格数据的输出类型,指定为下列值之一:

  • "logical" - 对于表或时间表输入数据,以逻辑数组形式返回输出 TF

  • "tabular" - 对于表输入数据,以表形式返回输出 TF。对于时间表输入数据,以时间表形式返回输出 TF

对于数组输入数据,不支持指定输出类型。

示例: ismissing(T,OutputFormat="tabular")

输出参量

全部折叠

缺失数据指示符,以向量、矩阵、多维数组、表或时间表形式返回。值 1 (true) 对应于 F 中先前缺失但现在已填充的条目。值 0 (false) 对应于未更改的条目。

对于数组输入数据,TF 是与 A 大小相同的逻辑数组。对于表输入数据,format 指定 TF 是逻辑数组还是具有逻辑变量的表或时间表。

数据类型: logical

提示

  • 由于整数变量无法存储 NaN,请使用特殊整数值(或者未使用过的整数值)来指示缺失的整数数据,例如 -99

  • 有关查找缺失字符串的详细信息,请参阅测试空字符串和缺失值

  • 对于结构体数组或由非字符向量组成的元胞数组形式的输入数据,ismissing 返回 false。要查找结构体数组中的缺失值,请使用 structfun 函数将 ismissing 应用于结构体中的每个字段。要查找由非字符向量组成的元胞数组中的缺失值,请使用 cellfun 函数将 ismissing 应用于元胞数组中的每个元胞。

算法

对于字符向量元胞数组、字符数组或分类数组形式的指示符,ismissing 以不同的方式处理前导和尾随空白。

  • 对于字符向量元胞数组,ismissing 不会忽略指示符空白。所有字符向量必须完全匹配。

  • 对于表变量中的字符数组,ismissing 会忽略指示符中的尾随空白。

  • 对于分类数组,ismissing 会忽略指示符中的前导和尾随空白。

替代功能

实时编辑器任务

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

Clean Missing Data task in the Live Editor

扩展功能

全部展开

版本历史记录

在 R2013b 中推出

全部展开