Necesita crear una columna basada en la secuencia de variables que aparecen en otra columnaHola a todos,
Quiero crear una columna basada en :Identificación del cliente y cuántas veces (un número de secuencias se cuenta como 1 solo, consulte el :Comentario columna) aparece en el conjunto de datos. Mi requerimiento es: Requisito final y estaría feliz de tener: Columna 1 requerida también. No puedo reorganizar/ordenar los datos.
¿Alguna ayuda por favor?
Muchas gracias, -HSS

secuencias de comandosRe: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columnaUsando consulta SQL (especialmente GROUP_CONCAT ) o las diferentes operaciones de tabla de JMP (dividir, transponer, texto en columnas y combinar columnas, volver a unir) pueden ser más fáciles que la fórmula (y más rápidas), pero podría hacerlo con una fórmula, por ejemplo, usando ubicación() e indexación de diferentes columnas.
Editar: método interactivo agregado
Primera división de datos:

A continuación, transponga los datos divididos:

A partir de datos transpuestos, primero use texto en columnas para separar Req2 y Region entre sí

Luego use combinar columnas para combinar columnas de fila

Cambie el nombre y elimine las columnas innecesarias y debería terminar con algo como esto

Une esto con los datos originales2


Quite las columnas adicionales y debería tener lo que necesita.
Es posible que el registro mejorado tenga una secuencia de comandos lista para usted, pero es posible que deba limpiarlo un poco

Re: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columnaHola a todos,
Hay un requisito adicional: agregar una columna más :Req_3 , donde todos los textos de :Grupo se combinarían y almacenarían. :Grupo el texto puede tener hasta 2 líneas. El separador puede ser cualquier cosa.
El problema es que el número de celdas que deben combinarse no es fijo, depende del valor en la columna :Req_1.
Se requiere "Req_3".
Cualquier ayuda, gracias.

Re: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columna@jthi Gracias por su ayuda.
Trabajaré en esta dirección.
Re: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columnaLo más fácil es crear una nueva columna y luego usarla como agrupación en lugar de: Client_ID (fórmula original)

Col Cumulative Sum(:"Concatenate[Region,Client_ID]"n != Lag(:"Concatenate[Region,Client_ID]"n), :"Concatenate[Region,Client_ID]"n)
De lo contrario, la parte que se suma en la suma acumulativa se vuelve más complicada con bastante rapidez (puede haber otras más fáciles que esta, pero esto debería manejar valores incorrectos en: Cambio de región):
Col Cumulative Sum(
If(Row() == Col Minimum(Row(), :Client_ID, :Region),
1
,
:Client_ID != Lag(:Client_ID)
)
, :Client_ID, :Region
)
Re: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columna@jthi Col Cumulative Sum funcionará, pero no puedo encontrar una inicialización correcta del ciclo/punto de inicio con la variable de agrupación: Región.
¿Alguna otra sugerencia?
Gracias
Col Cumulative Sum( :Client_ID != Lag( :Client_ID ) & :Region == Lag( :Region ), :Client_ID )
Re: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columnaPrimero tendría que crear una nueva columna de "agrupación" si quisiera usar Associative Array de esa manera. Con múltiples columnas de agrupación, podría ser más fácil usar Col Cumulative Sum (puede que siempre sea más fácil, solo se me ocurrió esto). Tendrás que averiguar la comparación correcta y las agrupaciones.
Col Cumulative Sum(:Client_ID != Lag(:Client_ID), :Client_ID)
Re: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columnaHola @jthi , ¿Puedo hacer la agrupación también en "Matriz asociada" usando otras columnas? Algo como esto ? "Array asociado(:Client_ID, :Region)" y mi conjunto de datos tiene más de 700000 filas, ¿seguirá funcionando el comando asociado? Si puedo agrupar por :Región , aún puede tener más de 10000 filas. En cualquier caso, sin duda intentaré esto.
Gracias por su ayuda. Saludos, - HSS
Re: Necesito crear una columna basada en la secuencia de variables que aparecen en otra columnaEl uso de una matriz asociativa para almacenar el valor y luego aumentar según sea necesario debería funcionar aquí.
Fórmula para la columna 1 requerida:
As Constant(
aa = Associative Array(:Client_ID);
aa = Associative Array(aa << get keys, Repeat(0, N Items(aa)));
retval = 1;
);
If(:Client_ID != Lag(:Client_ID),
aa[:Client_ID]++;
);
aa[:Client_ID];
Y último requisito:
Eval Insert("^:Client_ID^_^:Required Column 2^");
Script de ejemplo (usa diferentes nombres de columna):
Names Default To Here(1);
dt = Open("$DOWNLOADS/data.jmp");
dt << New Column("Required Column 2", Numeric, Ordinal, Formula(
As Constant(
aa = Associative Array(:Client_ID);
aa = Associative Array(aa << get keys, Repeat(0, N Items(aa)));
retval = 1;
);
If(:Client_ID != Lag(:Client_ID),
aa[:Client_ID]++;
);
aa[:Client_ID];
));
dt << New Column("Final Requirement 2", Character, Ordinal, Formula(
Eval Insert("^:Client_ID^_^:Required Column 2^");
));
