matlab - 在具有多种数据类型的表中查找值并将其设置为 NA 或 NaN
问题描述
我有一个大约 105 x 10 的表(我在这个问题中称为“T”),第 2 列和第 3 列包含字符串,其余的都包含数字。在第 5 到第 10 列(仅包含数字)中,我有一些 999 的值散布在我想要设置为 NA 或 NaN 的数据中。我怎样才能做到这一点?我试过了:
idx = T{:,5:10} == 999;
T{idx} = NaN;
T(ismissing(T,{999})) = NaN;
T{T==999}=NaN;
T(T{:,5:10}==999,:) = NaN;
表数据如下所示:
1 'LevelTwo' 'Trial1' 0 -0.354977112125573 -0.342962246562734 999 999 999 999
1 'LevelTwo' 'Trial1' 1 -0.185281358489472 0.196843601863376 0.191455534789190 0.191455534789190 0.196337466839364 0.239420563280515
1 'LevelTwo' 'Trial1' 1 0.393217912708115 0.301686005068917 -0.167798347008035 -0.167798347008035 -0.107991484625157 0.108461970332887
1 'LevelTwo' 'Trial1' 1 -0.145362442084958 -0.327523065746791 0.184717880799754 0.184717880799754 0.0848972787264908 0.166202231586311
1 'LevelTwo' 'Trial2' 1 -0.309966518338289 -1.67389513513988 0.186656639405178 0.186656639405178 -0.0898354852721748 -0.232764706067819
1 'LevelTwo' 'Trial2' 1 -0.0677751233445754 0.131643384129556 0.320810761759298 0.320810761759298 0.244546397660921 0.277629762491316
1 'LevelTwo' 'Trial2' 1 -0.180564795679273 0.101929692518556 -0.134486855393823 -0.134486855393823 -1.61383942825616 0.100825254423938
1 'LevelTwo' 'Trial3' 0 999 999 999 999 999 999
1 'LevelTwo' 'Trial3' 1 -0.281085702707834 -0.0950243910429598 -0.0856708961622575 -0.0856708961622575 -0.221969474699963 -0.158533022159099
1 'LevelTwo' 'Trial4' 1 -1.01621209202249 -1.05630974785680 -0.128439670451306 -0.128439670451306 0.216852995526501 0.154914119245274
10 'LevelTwo' 'Trial10' 0 -2.60256948228157 -2.21021399689544 -0.513562238953105 -0.513562238953105 -0.918985308726539 -1.11565199530760
10 'LevelTwo' 'Trial11' 0 0.638560227147980 -0.660529540036614 -0.0354971842584826 -0.0354971842584826 999 999
解决方案
你的问题是你有一个逻辑索引矩阵,你想用它来索引到你的表的类似矩阵的部分。但是,表支持的唯一逻辑索引是逻辑索引的向量,这些索引引用了要选择的行或列。索引行侧的逻辑向量选择所有引用列引用的行,反之亦然。它必须是这种方式,因为可能由索引的每个元素引用的可能的混合数据类型会产生歧义。
如果将数字表的子集作为单独的数字数组使用,则可以坚持使用逻辑索引:
numbers = T{:,5:10};
numbers(numbers == 999) = NaN;
T{:,5:10} = numbers;
或者您可以逐列直接处理表格,一次使用一个逻辑向量来索引行:
for ii = 5:10
T{T{:,ii} == 999,ii} = NaN;
end
推荐阅读
- google-cloud-platform - 错误删除 /bin 文件夹计算引擎?
- sql-server - 无法访问 docker 内的脚本文件
- css - 在 React 中条件渲染时未正确应用 CSS 样式
- magento - 在 Magento 2 上添加 shipping_save_after 观察者时出现错误 500
- graphql - Graphql 过滤掉特定图像不显示?
- python - Python替换/删除字符串中的所有url
- c - 在 C 中操作字符串时,在非常相似的函数中出错
- tableau-api - Tableau Desktop - 尝试滚动 12 个月,滚动 12 个月应该在起点拉平
- php - 在没有 Symfony 的情况下使用 symfony 版本的树枝扩展?
- python - pywinauto 功能区菜单不返回控件标识符