Nos données ont dix répétitions (répétitions, pour être plus précis).Les données souhaitées se situent entre des vitesses de véhicule de 35 et 70 mph.Pour chacun des dix réplicats, une colonne intitulée « temps » existe, et cette indication de temps varie un peu, en raison de la variation de la procédure expérimentale.
J'aimerais créer une colonne calculée à l'aide de commandes JMP, et non de scripts, pour une « heure ajustée ».
Dans cette colonne, la valeur serait remise à zéro en soustrayant de chaque valeur de temps la première fois indiquée à la première vitesse de 35 mph.Pour les dix répliques, cette colonne devrait d'une manière ou d'une autre inspecter la colonne des répliques et, à la première occasion d'une nouvelle réplique, modifier le temps ajusté pour les données de temps de valeur de 35 mph de cette réplique.De cette façon, chaque colonne de "temps ajusté" commencerait à zéro et se terminerait à 70 mph.
Des idées pour automatiser cette tâche ?Merci d'avance.
Il pourrait être plus facile de faire la formule selon si :
- Les données sont triées
- Si 35 mph n'apparaît qu'une seule fois par répétition
- Si 35 mph a toujours la plus petite valeur de temps
Parce que cette information n'a pas été donnée ou que j'ai mal compris quelque chose, j'ai opté pour une formule un peu plus compliquée :
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(12),
Compress File When Saved(1),
New Column("Repeat",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])
),
New Column("Speed",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([35, 35, 70, 35, 40, 70, 35, 36, 70, 60, 35, 36])
),
New Column("Time",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3, 1.1, 2, 3, 1.2, 2, 3, 1, 2, 3])
)
);
dt << New Column("Adjusted Time",
Numeric,
"Continuous",
Formula(
If(Row() == 1,
//Find rows with speed of 35
speedRows = Loc(:Speed << get as matrix, 35);
//get repeats for 35 rows
repeats = :Repeat[SpeedRows];
);
//time for first 35mph for current rows repeat
curTime = :Time[Loc(repeats, :Repeat)[1]]; //adjusted time
:Time - curTime;
)
);