Hola ,
Estoy tratando de crear una variable (tipo2) a partir de varias filas por ID usando el tipo de variable. Quiero encubrir una mesa como esta:
IDENTIFICACIÓN | escribe |
1 | A |
1 | A |
1 | B |
2 | A |
2 | A |
3 | B |
3 | B |
3 | B |
Para:
IDENTIFICACIÓN | tipo 2 |
1 | C |
2 | A |
3 | B |
Donde type2 es:
Si el tipo es siempre A, entonces type2 = A;
Si el tipo es siempre B, entonces type2 = B;
Si el tipo es una combinación de A y B, entonces tipo2 = C;
Gracias
Muchas formas de hacer esto. Calcularía cuántas veces aparece el tipo en la ID y si es la misma cantidad que la ID aparece en los datos, entonces sabrá que es el único tipo.
Resumen con fórmula:
Names Default To Here(1);
dt = New Table("From",
Add Rows(8),
New Column("ID", Numeric, "Nominal", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 3, 3, 3])),
New Column("type", Character(16), "Nominal", Set Values({"A", "A", "B", "A", "A", "B", "B", "B"}))
);
dt_summary = dt << Summary(
Output table("To"),
Group(:ID),
N(:type),
Subgroup(:type),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
dt_summary << New Column("type2", Character, "Nominal",
<< Set Each Value(
If(:"type, A"n == 0, "B",
:"type, B"n == 0, "A",
"C"
)
)
);Y otro usando Col Sum con Seleccionar filas duplicadas:
Names Default To Here(1);
dt = New Table("From",
Add Rows(8),
New Column("ID", Numeric, "Nominal", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 3, 3, 3])),
New Column("type", Character(16), "Nominal", Set Values({"A", "A", "B", "A", "A", "B", "B", "B"}))
);
dt << New Column("type2", Character, Nomimal, Formula(
If(Col Sum(1, :ID) == Col Sum(1, :ID, :type),
:type,
"C"
)
));
wait(1);
dt:type2 << Delete Formula;
wait(1);
dt << Select Duplicate Rows(Match(:ID, :type2));<BR />wait(1);<BR />dt << Delete Rows;Consulte Índice de secuencias de comandos para obtener más información sobre las funciones, especialmente Col Sum.