大家好,
我有这种类型的数据表(参见附件)。我想检测超出2个阈值(-0.5和0.5)的所有值,并用天花板值替换它们。例如:-5.30,-6.00,-11.56必须替换为-5.00的相同值,5.00,6.00和11.56替换为5.00。
你有什么建议以简单的方式做到这一点吗?
提前感谢你
如果您考虑使用JSL执行此操作,有几种方法。
例如,您可以简单地循环遍历列并有条件地替换单元格
dt = Data Table("test.jmp");
For(i = 8, i <= N Col(dt), i++,
ur = dt << get rows where(Column(dt, i)[] > 0.5);
lr = dt << get rows where(Column(dt, i)[] < -0.5);
Column(dt, i)[ur] = 5;
Column(dt, i)[lr] = -5;
);
另一种选择(JMP 13)是使用下标将数据表作为矩阵使用。语法还支持赋值,即替换单元格值。这是一个例子:
dt = Data Table("test.jmp");
t = 0.5; // Treshold value
c = 5; // Ceiling value
nr = N Row(dt);
nc = N Col(dt);
M = dt[1 :: nr, 8 :: nc];// Matrix with all cells from col 8 to end of table
U = M <= t; // Below upper limit?
L = M >= -t; // Above lower limit?
//Assign treshold values to data table
dt[1 :: nr, 8 :: nc] = M :*</img> (U & L) + c * (!U - !L);