<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
大家好,
我有一个不等间隔的温度日志文件和它们之间的持续时间。
我想清理数据集,因此在相同的温度测量之间不会有重复的温度和短的间隔。
要删除重复,我使用以下代码:
重复 = DT << 得到行在哪里 ( 落后 ( : 温度 , 1 ) == : 温度 ) ;
DT << 删除行 ( 重复 ) ;
对于相同温度之间的短跳,我使用:
跳 = DT << 得到行在哪里 ( 和 ( 落后 ( : 温度 , 1 ) == 落后 ( : 温度 , - 1 ) , : 持续时间 < 2 ) ) ;
DT << 删除行 ( 跳 ) ;
这是重复完成的,因为一旦清除了跳转,就会有新的重复,反之亦然。所以我在for循环中使用它。我总是可以做到这一点(将i设置为高数字),但效率很低。
任何改进循环的建议,以便在没有重复跳转时停止?
整个脚本如下所示:
DT = 新表 ( “日志文件” ,添加行 ( 500 ) ) ;
DT << 新栏目 ( “温度” ,
设置属性 ( “价值颜色” , { 1 = - 13977687 , 2 = - 3780931 , 3 = - 4222943 , 4 = - 13596966 ,五 = - 2211217 } ) ,
颜色单元格的价值
) ;
对于每一行 ( DT : 温度 = 随机整数 ( 五 ) ) ;
DT << 新栏目 ( “持续时间” ) ;
对于每一行 ( DT : 持续时间 = 随机整数 ( 3 ) ) ;
//删除重复行和短跳转
对于 ( 一世 = 1 ,一世 <= 五 ,一世 ++,
重复 = DT << 得到行在哪里 ( 落后 ( : 温度 , 1 ) == : 温度 ) ;
DT << 删除行 ( 重复 ) ;
跳 = DT << 得到行在哪里 ( 和 ( 落后 ( : 温度 , 1 ) == 落后 ( : 温度 , - 1 ) , : 持续时间 < 2 ) ) ;
DT << 删除行 ( 跳 ) ;
) ;
是的,它们是等价的。总和始终返回一个数字,JMP将所有非零数字视为TRUE。因此,如果测试返回1或37则无关紧要。两者都同样正确。
Thaks @MS,
你能解释一下jmp是如何读取的吗? N行 ( 重复 ) + N行 ( 跳 ) 作为测试表达?
它等同于:
要么 ( N行 ( 重复 ) , N行 ( 跳 )) > 0
罗恩
你可以尝试一下while循环。当Repeat和Jumps都是空矩阵时,下面的循环应该停止。
跳 = 重复 = [ 1 ] ;
而 ( N行 ( 重复 ) + N行 ( 跳 ) ,
重复 = DT << 得到行在哪里 ( 落后 ( : 温度 , 1 ) == : 温度 ) ;
DT << 删除行 ( 重复 ) ;
跳 = DT << 得到行在哪里 ( 和 ( 落后 ( : 温度 , 1 ) == 落后 ( : 温度 , - 1 ) , : 持续时间 < 2 )) ;
DT << 删除行 ( 跳 ) ;
) ;