Calcola la differenza di tempoHo un set di dati, nello script lo chiamo RTDT.Contiene le colonne Time, Sub_name e Substrate_ID.Sto cercando di calcolare la differenza di tempo tra la prima volta e l'ultima volta un unico Sub_name e Substrate_ID sono elencati. Verranno elencati in sequenza per ogni Sub_name e Substrate_ID univoci.Il mio codice è il seguente:
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 );
)
);
Tutto quello che ottengo per i risultati sono ".".Il mio problema riguarda il formato della colonna dell'ora? Sto pensando che l'istruzione if() non si verifichi mai perché non ottengo risultati o errori.
Qualsiasi aiuto sarebbe apprezzato.Grazie
La tabella dei dati è allegata.
Re: Calcola la differenza di orarioSei un vero fenomeno.Non essendo un ingegnere del software, ho passato un paio d'ore a provare a fare quello che ho fatto e tu l'hai risolto con una sola equazione.Sorprendente.Grazie.
Re: Calcola la differenza di orarioSembra che tu abbia un problema di sintassi.Stai usando () per l'abbonamento, dove dovresti usare [].Inoltre, sembri.
Penso che l'unica formula di cui hai bisogno per la tua colonna chiamata Runtime sia:
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 ) )
);