Complete la columna una vez por grupo sin repetir valores con JSL¡Hola!
Entonces tengo la siguiente tabla de datos. Los resultados de las pruebas individuales se encuentran en la columna "resultado de la prueba" e indican si el y respectivo pasa las pruebas a, by c. La columna "resultado general" indica "aprobado" si pasan 2 o más de las pruebas (a,b,c).
Pude calcular el resultado general con una fórmula, pero lo que me gustaría hacer es obtener una lista que diga el resultado una vez por variable Y, es decir, resultado general = "aprobado, reprobado, aprobado" como lo hace el resultado general ideal . ¿¿Algunas ideas??

código para dt:
dt = New Table( "example",
Add Rows( 0 ),
New Column( "Y", character ),
New Column( "test",character ),
New Column( "test result",character )
)
:Y << set values( {var1,var1,var1,var2,var2,var2,var3,var3,var3});
:test << set values( {a,b,c,a,b,c,a,b,c});
:test result<< set values( {pass,pass,fail,fail,pass,fail,pass,pass,pass});
new column("overall result",Formula(if(col sum(test result=="pass",Y)>=2, "Pass", "Fail")));Automatización y secuencias de comandosRe: Llenar columna una vez por grupo sin repetir valores con JSLSólo necesitas un pequeño cambio en tu fórmula.
New Column( "overall result",
Formula(
If(
Col Cumulative Sum( 1, :Y ) > 1, "",
Col Sum( test result == "pass", :Y ) >= 2, "Pass",
"Fail"
)
)
);

Re: Llenar columna una vez por grupo sin repetir valores con JSLOpción adicional (normalmente hago este tipo de "cambios" usando Row() == Col Min(Row()) o Row() == Col Max(Row())).
Names Default To Here(1);
dt = New Table("example 4",
Add Rows(9),
Compress File When Saved(1),
New Column("Y", Character, "Nominal", Set Values({"var1", "var1", "var1", "var2", "var2", "var2", "var3", "var3", "var3"})),
New Column("test", Character, "Nominal", Set Values({"a", "b", "c", "a", "b", "c", "a", "b", "c"})),
New Column("test result", Character, "Nominal", Set Values({"pass", "pass", "fail", "fail", "pass", "fail", "pass", "pass", "pass"}))
);
dt << New Column("Res", Character, Nominal, Formula(
If(Row() != Col Min(Row(), :Y),
"" // not first row fir Y group
, Col Sum(:test result == "pass", :Y) >= 2,
"pass"
, // else
"fail"
)
));