根据不同的条件用NaN替换表中的某些值

34次浏览(最近30天)
莉莎米
莉莎米 2021年8月16日
评论道: 莉莎米2021年8月17日
大家好,
我基本上是新的Matlab和似乎是在我的当前问题的迷失-所以任何帮助将非常感激。
我有一些数据存储在一个名为T的表中,该表的大小为724行x 365个变量。
对于一些变量,在继续进行统计分析之前,我需要排除基于不同条件的极端值。但是由于这些并不保证排除整个数据集(行),所以我想用表T中的NaN替换这些值。
到目前为止,这只涉及到列129中的变量,如果它们等于或小于3.1006,则应该用NaN替换,如果它们等于或小于4.8673,则应该用NaN替换列131中的值。
我已经试图得到这工作了几个小时的几个变化的逻辑索引和我现在卡在这:
extremevalues = (T {: 129} < = 3.1006) | (T {: 131} < = 4.8673);
T (extremevalues) =南;
这并没有给我任何错误——这是最远的我到目前为止,然而,它不能取代那些极端值在相应的列nan(没有nan出现在任何一个指定列的T, extremevalues然而给我几个“1”年代快速滚动)。
我也试过用T{:, variablenr}替换T{:, variablenr}——这也没有改变任何东西。
我觉得解决方案应该相当简单,但我似乎找不到它(或只是没有足够的经验去找到它)。
提前非常感谢!

答案(2)

darova
darova 2021年8月16日
也许你需要先把数据转换成矩阵
一个=兰迪(10、5、4)
一个=5×4表
Var1 Var2 Var3 Var4 ____ ____ ____ ____7 8 8 2 1 2 1 5 3 7 1 7 1 5 5 7 2 10 8 4
if (A < = 1, if (A < = 1));当使用table时出现这个错误
'table'类型的操作数不支持操作符'金宝app<'。
(印第安纳州:)= nan
1评论
莉莎米
莉莎米 2021年8月17日
我认为,如果我的表不是混合数据类型(除了数字变量,还有其他变量),这将是有效的。
不管怎样,我刚刚发现了rmoutliers函数,它用指定的变量来做我需要的事情,只是比我尝试过的方法简单得多。
再次感谢您的快速帮助!

登录评论。


我J
我J 2021年8月17日
表格 ,你需要直接访问变量名/列索引。所以, T (extremevalues) =南; 不能工作。
这可以帮助:
T = splitvars(table(重塑(1:20,5,4)))
t =5×4表
Var1_1 Var1_2 Var1_3 Var1_4 ______ ______ ______ ______16 11 16 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20
%将列2中低于8的值设置为nan
colN = 2;
截止= 8;
t.(colN)(t.(colN) < cutoff) = nan
t =5×4表
Var1_1 Var1_2 Var1_3 Var1_4 ______ ______ ______ ______1 NaN 11 16 2 NaN 12 17 3 8 13 18 4 9 14 19 5 10 15 20
1评论
莉莎米
莉莎米 2021年8月17日
你好,
所以这一次我的问题解决了,但这是一个很好的建议,为未来,谢谢!

登录评论。

标签

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!