Je ne sais pas comment ces valeurs sont calculées. Nous ne pouvons utiliser Apr que trois mois avant lui, mais le nombre de tests ne devrait-il pas être de 8 et le nombre de numéros de série uniques de 6 ?
Il sera probablement plus facile de créer d'abord un tableau récapitulatif, puis d'y effectuer les calculs, car vous n'aurez qu'une seule ligne pour chaque mois.
Désolé, l'affichage des résultats pour janvier et février était probablement source de confusion.Et je n'ai pas très bien expliqué "3 mois avant".Voici ce que je veux dire : pour la ligne récapitulative d'avril, comptez tous les tests exécutés en février, mars et avril et comptez tous les numéros de série uniques pour la même période.La ligne récapitulative de mars serait similaire, mais utiliserait janvier, février et mars.J'accepterais soit des blancs pour le résumé de janvier et février, soit janvier basé uniquement sur les données de janvier et le résumé de février basé uniquement sur les données de janvier et février.
Le point clé est que certains numéros de série sont testés plusieurs fois au cours de différents mois et si je limite le délai à seulement 1 mois, le nombre de tests par rapport au nombre d'unités uniques testées n'est pas exact.
Ce n'est certainement pas la seule façon de le faire, mais une option possible
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(10),
Compress File When Saved(1),
New Column("Month",
Character,
"Nominal",
Set Values({"Jan", "Jan", "Jan", "Feb", "Feb", "Feb", "Mar", "Mar", "Apr", "Apr"})
),
New Column("Serial # of unit tested",
Numeric,
"Nominal",
Format("Best", 12),
Set Values([1001, 1001, 1002, 1002, 1003, 1004, 1005, 1006, 1006, 1006])
)
);
dt_results = New Table("Untitled 3",
Compress File When Saved(1),
New Column("Month", Character, "Nominal", Set Values({})),
New Column("# of tests, prior 3 months", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("# of unique SN tested, prior 3 months", Numeric, "Continuous", Format("Best", 12), Set Values([]))
);
//
order = {"Jan", "Feb", "Mar", "Apr"};
Summarize(dt, uniq_months = By(:Month));
For Each({cur_month}, uniq_months,
cur_month_idx = Contains(order, cur_month);
months_of_interest = If(cur_month_idx < 3,
order[1::cur_month_idx];
,
order[(cur_month_idx - 2)::cur_month_idx];
);
// number of tests is same as number of rows
rows_of_interest = dt << Get Rows Where(Contains(months_of_interest, :Month));
nr_of_tests = N Items(rows_of_interest);
// number of unique items we can get with associative array
unique_snrs = Associative Array(dt[rows_of_interest, "Serial # of unit tested"]) << get keys;
nr_of_unique = N Items(unique_snrs);
cur_month_result = Eval List({cur_month, nr_of_tests, nr_of_unique});
dt_results << Add Row(1);
dt_results[N Row(dt_results), 0] = cur_month_result;
);

Si vous avez plusieurs années, cela nécessitera des modifications
J'essaie de trouver un moyen de résumer un tableau sur une période de 3 mois glissants.J'ai essayé différentes approches avec les fonctions 'lag' et 'col rolling' mais je n'ai pas encore eu de succès.Aucun conseil?J'utilise JMP 16
Exemple de données d'origine
Mois | Numéro de série de l'unité testée |
Jan | 1001 |
Jan | 1001 |
Jan | 1002 |
Fév | 1002 |
Fév | 1003 |
Fév | 1004 |
Mar | 1005 |
Mar | 1006 |
Avr | 1006 |
Avr | 1006 |
Données résumées souhaitées
Mois | # de tests, 3 mois précédents | # de SN uniques testés, 3 mois précédents |
Jan | 3 | 2 |
Fév | 6 | 4 |
Mar | 8 | 6 |
Avr | 7 | 5 |