Bonjour,
J'ai le tableau de température de temps 1 et le tableau de temps de début et de fin de fonctionnement 2. Je voudrais ajouter une nouvelle colonne dans le journal de temperaure de temps et étiqueter la cellule "opération" quand il est dans l'opération peroid. Est-ce que quelqu'un sait comment faire ça?
Kevin,
Le tableau 2 prête à confusion, l'heure de fin est antérieure à l'heure de début. La seule heure qui correspond à la table de température est l'heure de début. Vous trouverez ci-dessous un script. Cependant, je m'attendais à ce que l'heure de fin soit postérieure à l'heure de début.
Vous pouvez trouver ces opérations de démarrage en joignant les deux tables correspondant à l'heure avec l'heure de début, voir le deuxième bloc de JSL.
Comme seule l'heure de début correspond, j'ai ajouté du code pour copier les différentes opérations et créer une colonne de durée pour comparer visuellement la stabilité de la température.
Names Default to Here(1);
dt1 = Data Table("Table 1 Temperature log");
dt2 = Data Table("Table 2 operation Time");
dt1 << New Column ("Operation", character);
for(i=1, i<=nrows(dt2), i++,
tbeg = dt2:Start Time[i];
tend = dt2:End Time[i];
_idx = dt1 << get rows where( tend <= dt1:Time <= tbeg);
if(nrow(_idx)>0,
dt1:Operation[_idx] = "Operation " || char(i);
); //end if
); //end for
//since there is only one row that matches, copy down
//if End Time column was the end of the operation, this would not be needed
//--copy down and get duration
dt1 << New Column("Duration", Numeric, Continuous, Format("min:s") );
_idx = dt1 << get rows where (:Operation != "");
for(i=1, i<=nrow(_idx), i++,
init = dt1:Time[_idx[i]];
If(i < nrow(_idx),
tbeg = _idx[i];
tend = _idx[i + 1] - 1;
dt1:Operation[tbeg :: tend ] = dt1:Operation[_idx[i] ];
, //else
tbeg = _idx[i];
tend = nrow(dt1);
dt1:Operation[tbeg :: tend ] = dt1:Operation[_idx[i] ];
);
dt1[tbeg :: tend,"Duration"] = Transpose(dt1:Time[tbeg :: tend] - init);
);
//--graph
gb = dt1 << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables( X( :Duration ), Y( :RoomTemp ), Overlay( :Operation ) ),
Elements( Points( X, Y, Legend( 9 ) ), Line( X, Y, Legend( 11 ) ) )
);
Joindre
Data Table( "Table 1 Temperature log" ) << Join(
With( Data Table( "Table 2 operation Time" ) ),
By Matching Columns( :Time = :Start Time ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 0 ),
Preserve main table order( 1 )
)