時差を計算する私は一連のデータを持っています。スクリプトではそれを RTDT と呼んでいます。これには、Time、Sub_name、および Substrate_ID 列が含まれています。ユニークな初回と前回の時間差を計算しようとしていますSub_name と Substrate_ID がリストされます。 それらは、一意の Sub_name および Substrate_ID ごとに順番にリストされます。私のコードは次のとおりです。
RTDT << New Column( "Runtime", Numeric, "Continuous", Format( "h:m:s", 11, 0 ), Input Format( "h:m:s", 0 ), );
SubNameFirst = RTDT:Sub_name( 1 );
SNFirst = RTDT:Substrate_ID( 1 );
TimeFirst = RTDT:Time( 1 );
EOL = N Rows( RTDT );
For( i = 1, i <= EOL, i++,
If( SubNameFirst != RTDT:Sub_name( i ) || SNFirst != RTDT:Substrate_ID( i ),
Formula( RTDT:Runtime( i - 1 ) = (RTDT:Time( i - 1 ) - TimeFirst) );
SubNameFirst = RTDT:Sub_name( i );
SNFirst = RTDT:Substrate_ID( i );
TimeFirst = RTDT:Time( i );
)
);
結果として得られるのは「.」だけです。時間列の形式に問題がありますか? 結果やエラーが得られないため、if() ステートメントは発生しないと考えています。
どんな助けでも大歓迎です。ありがとう
データ表を添付します。
Re: 時差を計算するあなたは真の天才です。私はソフトウェア エンジニアではありませんが、自分がやったことをしようと数時間を費やしましたが、あなたはそれを 1 つの方程式で解いてしまいました。すばらしい。ありがとう。
Re: 時差を計算する構文に問題があるようです。[] を使用する必要がある場合に、添字に () を使用しています。また、あなたのようです。
Runtime という列に必要な唯一の式は次のとおりだと思います。
Col Max( :Time, :Sub_name, :Substrate_ID )
-Col Min( :Time, :Sub_name, :Substrate_ID )
RTDT << New Column( "Runtime",
Numeric,
"Continuous",
Format( "h:m:s", 11, 0 ),
Input Format( "h:m:s", 0 ),
formula( Col Max( :Time, :Sub_name, :Substrate_ID ) - Col Min( :Time, :Sub_name, :Substrate_ID ) )
);