目录
ismissing函数是查找缺失值。
语法
TF = ismissing(A)
TF = ismissing(A,indicator)
输入数据,指定为向量、矩阵、多维数组、表或时间表。如果 A
是时间表,则 ismissing
仅作用于表数据,而忽略行时间向量中的 NaT
或 NaN
值。
当输入参数是元胞数组时,它必须为字符向量元胞数组。如果输入是包含类型为 cell
的变量的表或时间表,则 ismissing
仅在该变量是字符向量元胞数组时才检测缺失元素。
缺失值指示符,指定为标量、向量或元胞数组。如果 A
为数组,则 indicator
必须为向量。如果 A
为表或时间表,则 indicator
也可以是具有多个数据类型条目的元胞数组。
指示符的数据类型与 A
中条目的数据类型相匹配。下面列出了指示符与 A
的元素之间的其他数据类型匹配:
-
double
指示符匹配A
中的double
、single
、整数和logical
条目。 -
string
和char
指示符以及字符向量元胞数组形式的指示符匹配A
中的string
条目。 -
string
和char
指示符匹配A
中的categorical
条目。
提示
-
由于整数变量无法存储
NaN
,请使用特殊整数值(或者未使用过的整数值)来指示缺失的整数数据,例如-99
。 -
有关查找缺失字符串的可以参考测试空字符串和缺失值。
算法
对于字符向量元胞数组、字符数组或分类数组形式的指示符,ismissing
以不同的方式处理前导和尾随空白。
-
对于字符向量元胞数组,
ismissing
不会忽略指示符空白。所有字符向量必须完全匹配。 -
对于表变量中的字符数组,
ismissing
会忽略指示符中的尾随空白。 -
对于分类数组,
ismissing
会忽略指示符中的前导和尾随空白。
说明
TF = ismissing(A)
返回逻辑数组,指示数组或表中的哪些元素包含缺失值。TF
的大小与 A
的大小相同。
标准缺失值取决于数据类型:
-
double
、single
、duration
和calendarDuration
的指示符为NaN
-
datetime
的指示符为NaT
-
string
的指示符为<missing>
-
categorical
的指示符为<undefined>
-
char
的指示符为' '
-
字符向量
cell
的指示符为{''}
TF = ismissing(A,indicator)
将 indicator
中的值视为缺失值指示符,而忽略上述语法中列出的所有默认指示符。indicator
可以是单个指示符,也可以是多个指示符。例如,如果 A
是 double
类型的数组,则 ismissing(A,[0,-99])
会将 0 和 -99 视为缺失的 double
值,而不是将 NaN
视为缺失值。
示例
向量中的 NaN
值
创建一个包含 NaN
值的行向量 A
,并确定这些值在 A
中的位置。
A = [3 NaN 5 6 7 NaN NaN 9];
TF = ismissing(A)
TF = 1x8 logical array
0 1 0 0 0 1 1 0
在包含各种数据类型的表中查找缺失值
创建一个包含不同数据类型的变量的表,并找出具有缺失值的元素。
dblVar = [NaN;3;5;7;9;11;13];
singleVar = single([1;NaN;5;7;9;11;13]);
cellstrVar = {'one';'three';'';'seven';'nine';'eleven';'thirteen'};
charVar = ['A';'C';'E';' ';'I';'J';'L'];
categoryVar = categorical({'red';'yellow';'blue';'violet';'';'ultraviolet';'orange'});
dateVar = [datetime(2015,1:2:10,15) NaT datetime(2015,11,15)]';
stringVar = ["a";"b";"c";"d";"e";"f";missing];
A = table(dblVar,singleVar,cellstrVar,charVar,categoryVar,dateVar,stringVar)
A=7×7 table
dblVar singleVar cellstrVar charVar categoryVar dateVar stringVar
______ _________ ____________ _______ ___________ ___________ _________
NaN 1 {'one' } A red 15-Jan-2015 "a"
3 NaN {'three' } C yellow 15-Mar-2015 "b"
5 5 {0x0 char } E blue 15-May-2015 "c"
7 7 {'seven' } violet 15-Jul-2015 "d"
9 9 {'nine' } I <undefined> 15-Sep-2015 "e"
11 11 {'eleven' } J ultraviolet NaT "f"
13 13 {'thirteen'} L orange 15-Nov-2015 <missing>
ismissing
会在 A
中具有缺失值的对应元素位置返回 1。
TF = ismissing(A)
TF = 7x7 logical array
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
TF
的大小与 A
的大小相同。
指定表中的缺失值指示符
创建一个表,其中 'NA'
、''
-99
、NaN
和 Inf
表示缺失值。然后,找出具有缺失值的元素。
dblVar = [NaN;3;Inf;7;9];
int8Var = int8([1;3;5;7;-99]);
cellstrVar = {'one';'three';'';'NA';'nine'};
charVar = ['A';'C';'E';' ';'I'];
A = table(dblVar,int8Var,cellstrVar,charVar)
A=5×4 table
dblVar int8Var cellstrVar charVar
______ _______ __________ _______
NaN 1 {'one' } A
3 3 {'three' } C
Inf 5 {0x0 char} E
7 7 {'NA' }
9 -99 {'nine' } I
ismissing
会在 A
中具有缺失值的对应元素位置返回 1。
id = {'NA' '' -99 NaN Inf};
TF = ismissing(A,id)
TF = 5x4 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.charVar
中的空白均识别为缺失值。