在 Matlab 中删除 Nan 行
Removing Rows if Nan in Matab
我在 matlab 中有一个 356x81 的 table。
如果某些 3 个变量(在 18 个变量中)的内容是 NaN
,我想删除行。换句话说,如果这 3 个变量中的任何一个具有 NaN
,我希望删除该行。
我找到 a good example on another group.
只是因为我的数据是 table 格式,我在使用 isnan
时遇到问题 我正在使用 ismissing
,但我不知道如何 select 3个特定变量。现在如果我使用:
B = mydata(~any(ismissing(mydata),2),:);
删除任何包含 NaN
的行。
我也不知道 2
是什么。我使用它是因为它在示例中,但我不知道它是什么。
非常感谢您的帮助。
2
指定如果一行(第二维)中的 任何 个值缺失,则它将 return true
.
您可以 select 通过使用变量名的单元格数组作为 table 中的列索引来仅关注您关心的列。然后我们可以使用 ismissing
检查缺失值并使用 any
来确定它们中是否有 NaN
.
toremove = any(ismissing(t(:, {'Var1', 'Var2', 'Var3'})), 2);
subtable = t(~toremove,:);
或者如果您希望所有三个都是 NaN
以便删除一行,我们可以使用 and
代替
toremove = all(ismissing(t(:, {'Var1', 'Var2', 'Var3'})), 2);
subtable = t(~toremove, :);
如果你有 R2016b,或者可以升级到它,你应该检查新的 rmmissing function:
x = rand(10,1); x(4) = NaN;
y = rand(10,1); y(2) = NaN;
z = rand(10,1); z(1) = NaN;
T = table(rand(10,1), x, y, z);
rmmissing(T, 'DataVariables', { 'x', 'y', 'z' });
我在 matlab 中有一个 356x81 的 table。
如果某些 3 个变量(在 18 个变量中)的内容是 NaN
,我想删除行。换句话说,如果这 3 个变量中的任何一个具有 NaN
,我希望删除该行。
我找到 a good example on another group.
只是因为我的数据是 table 格式,我在使用 isnan
时遇到问题 我正在使用 ismissing
,但我不知道如何 select 3个特定变量。现在如果我使用:
B = mydata(~any(ismissing(mydata),2),:);
删除任何包含 NaN
的行。
我也不知道 2
是什么。我使用它是因为它在示例中,但我不知道它是什么。
非常感谢您的帮助。
2
指定如果一行(第二维)中的 任何 个值缺失,则它将 return true
.
您可以 select 通过使用变量名的单元格数组作为 table 中的列索引来仅关注您关心的列。然后我们可以使用 ismissing
检查缺失值并使用 any
来确定它们中是否有 NaN
.
toremove = any(ismissing(t(:, {'Var1', 'Var2', 'Var3'})), 2);
subtable = t(~toremove,:);
或者如果您希望所有三个都是 NaN
以便删除一行,我们可以使用 and
代替
toremove = all(ismissing(t(:, {'Var1', 'Var2', 'Var3'})), 2);
subtable = t(~toremove, :);
如果你有 R2016b,或者可以升级到它,你应该检查新的 rmmissing function:
x = rand(10,1); x(4) = NaN;
y = rand(10,1); y(2) = NaN;
z = rand(10,1); z(1) = NaN;
T = table(rand(10,1), x, y, z);
rmmissing(T, 'DataVariables', { 'x', 'y', 'z' });