Non sono sicuro di come vengono calcolati questi valori. Possiamo usare solo Apr perché ha tre mesi prima, ma il numero di test non dovrebbe essere 8 e il numero di numeri di serie univoci 6?
Molto probabilmente sarà più semplice creare prima la tabella di riepilogo e quindi eseguire i calcoli lì poiché avrai solo una riga per ogni mese.
Spiacenti, la visualizzazione dei risultati per Jan e Feb probabilmente ha creato confusione.E non ho spiegato molto bene i "3 mesi precedenti".Questo è ciò che intendo: per la riga di riepilogo di aprile, conta tutti i test eseguiti a febbraio, marzo e aprile e conta tutti i numeri di serie univoci per lo stesso periodo di tempo.La riga di riepilogo di marzo sarebbe simile, ma utilizza gennaio, febbraio e marzo.Accetterei spazi vuoti per il riepilogo di gennaio e febbraio, oppure gennaio basato solo sui dati di gennaio e il riepilogo di febbraio basato solo sui dati di gennaio e febbraio.
Il punto chiave è che alcuni numeri di serie vengono testati più volte in mesi diversi e se limito l'intervallo di tempo a solo 1 mese, il numero di test rispetto al numero di unità uniche testate non è accurato.
Questo non è sicuramente l'unico modo per farlo, ma una possibile opzione
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;
);

Se hai più anni, richiederà modifiche
Sto cercando di trovare un modo per riassumere una tabella in un periodo continuo di 3 mesi.Ho provato diversi approcci con le funzioni "lag" e "col rolling", ma non ho ancora avuto successo.Qualche consiglio?Sto usando JMP 16
Esempio di dati originali
Mese | Numero di serie dell'unità testata |
gen | 1001 |
gen | 1001 |
gen | 1002 |
febbraio | 1002 |
febbraio | 1003 |
febbraio | 1004 |
marzo | 1005 |
Mar | 1006 |
apr | 1006 |
apr | 1006 |
Dati riassuntivi desiderati
Mese | # di test, precedenti 3 mesi | N. di SN univoci testati, nei 3 mesi precedenti |
gen | 3 | 2 |
febbraio | 6 | 4 |
Mar | 8 | 6 |
apr | 7 | 5 |