<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 、 5 = - 2211217 } ) 、
値によるカラーセル
) ;
各行について ( dt : 温度 = ランダム整数 ( 5 ) ) ;
dt << 新しいコラム ( 「期間」 ) ;
各行について ( dt : 期間 = ランダム整数 ( 3 ) ) ;
//繰り返し行と短いジャンプを削除する
にとって ( 私 = 1 、私 <= 5 、私 ++、
繰り返し = dt << 行を取得する ( 遅れ ( : 温度 、 1 ) == : 温度 ) ;
dt << 行を削除する ( 繰り返す ) ;
ジャンプ = dt << 行を取得する ( そして ( 遅れ ( : 温度 、 1 ) == 遅れ ( : 温度 、 - 1 ) 、 : 期間 < 2 ) ) ;
dt << 行を削除する ( ジャンプ ) ;
) ;
はい、それらは同等です。合計は常に数値を返し、JMPはゼロ以外のすべての数値をTRUEとして扱います。したがって、テストが1または37を返すかどうかは関係ありません。両方とも等しくTRUEです。
@ MSさん、
jmpの読み方を説明してください N列 ( 繰り返し ) + N列 ( ジャンプ ) テスト式として?
それと同等ですか?
または ( N列 ( 繰り返し ) 、 N列 ( ジャンプ )) > 0
ロン
whileループを試すことができます。下のループは、RepeatとJumpsの両方が空行列のときに停止します。
ジャンプ = 繰り返し = [ 1 ] ;
しながら ( N列 ( 繰り返し ) + N列 ( ジャンプ ) 、
繰り返し = dt << 行を取得する ( 遅れ ( : 温度 、 1 ) == : 温度 ) ;
dt << 行を削除する ( 繰り返す ) ;
ジャンプ = dt << 行を取得する ( そして ( 遅れ ( : 温度 、 1 ) == 遅れ ( : 温度 、 - 1 ) 、 : 期間 < 2 )) ;
dt << 行を削除する ( ジャンプ ) ;
) ;