No estoy seguro de cómo se calculan esos valores. Solo podemos usar abril ya que tiene tres meses antes, pero ¿no debería ser 8 el número de pruebas y 6 el número de números de serie únicos?
Lo más probable es que sea más fácil crear primero una tabla de resumen y luego realizar los cálculos allí, ya que solo tendrá una fila para cada mes.
Lo sentimos, mostrar los resultados de enero y febrero probablemente fue confuso.Y no expliqué muy bien "los 3 meses anteriores".Esto es lo que quiero decir: para la fila de resumen de abril, cuente todas las pruebas realizadas en febrero, marzo y abril y cuente todos los números de serie únicos para el mismo período de tiempo.La fila de resumen de marzo sería similar, pero usaría enero, febrero y marzo.Aceptaría espacios en blanco para el resumen de enero y febrero, o enero basado solo en datos de enero y resumen de febrero basado solo en datos de enero y febrero.
El punto clave es que algunos números de serie se prueban varias veces en diferentes meses y si limito el período de tiempo a solo 1 mes, entonces el número de pruebas frente al número de unidades únicas probadas no es exacto.
Definitivamente, esta no es la única forma de hacerlo, sino una opción posible.
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 tiene varios años, requerirá modificaciones.
Estoy tratando de encontrar una manera de resumir una tabla durante un período continuo de 3 meses.Probé diferentes enfoques con las funciones 'lag' y 'col rolling' pero aún no he tenido éxito.¿Algún consejo?Estoy usando JMP 16
Ejemplo de datos originales
Mes | Número de serie de la unidad probada |
Ene | 1001 |
Ene | 1001 |
Ene | 1002 |
Feb | 1002 |
Feb | 1003 |
Feb | 1004 |
Mar | 1005 |
Mar | 1006 |
Abr | 1006 |
Abr | 1006 |
Datos resumidos deseados
Mes | # de pruebas, 3 meses previos | # de SN únicos probados, 3 meses antes |
Ene | 3 | 2 |
Feb | 6 | 4 |
Mar | 8 | 6 |
Abr | 7 | 5 |