<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 << 刪除行 ( 跳 ) ;
) ;