Calcular diferencia de tiempoTengo un conjunto de datos, en el script lo llamo RTDT. Contiene las columnas Time, Sub_name y Substrate_ID. Estoy tratando de calcular la diferencia de tiempo entre la primera vez y la última vez que un único Se enumeran Sub_name y Substrate_ID. Se enumerarán secuencialmente para cada Sub_name y Substrate_ID únicos. Mi código es el siguiente:
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 );
)
);
Todo lo que obtengo por resultados es ".". ¿Mi problema con el formato de la columna de tiempo? Estoy pensando que la instrucción if () nunca ocurre porque no obtengo resultados o errores.
Cualquier ayuda sería apreciada. Gracias
Se adjunta tabla de datos.
Re: Calcular diferencia de tiempoEres un verdadero fenómeno. No siendo un ingeniero de software, pasé un par de horas tratando de hacer lo que hice y lo resolviste con una sola ecuación. Increíble. Gracias.
Re: Calcular diferencia de tiempoParece que tienes un problema de sintaxis. Está utilizando () para la creación de subíndices, donde debería estar usando []. Además, pareces.
Creo que la única fórmula que necesitas para tu columna llamada Runtime es:
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 ) )
);