Combinación de entradas de N columnas en una sola columna basada en entradas únicasHola,
Tengo N columnas, que tienen datos de caracteres que quiero consolidar en una sola columna. Para una fila dada, muchas de las columnas pueden estar en blanco o contener valores repetidos / mismos (en comparación con la entrada en otra columna).
Sé que hay una función en Cols -> Utilities -> Combine Columns y esto generará una nueva columna con todos los campos al lado y delimitados. Necesito consejos sobre cómo realizar este proceso mientras mantengo la exclusividad (es decir, solo agregue los valores para esa columna si no hay otras columnas w / en esa fila que tengan el mismo valor)
Idealmente, me gustaría obtener orientación sobre cómo escribir esto en JSL. Sin embargo, también son bienvenidos los enfoques inteligentes (pero más tediosos) con tablas / funciones de datos JMP.
Gracias.
Re: Combinar entradas de N columnas en una sola columna basada en entradas únicasGracias Brady_Brady !!
Funciona para mi tambien !!Re: Combinar entradas de N columnas en una sola columna basada en entradas únicasMuchas gracias Ms !!
Me gusta la flexibilidad de esta solución, incluido el poder especificar el número de columna de inicio y finalización que se utilizará. Realmente me gusta que también hiciste la clasificación en orden alfabético para reducir el número de permutaciones.
Lo siento por la respuesta demorada. Inicialmente pensé que había un problema de caso de esquina donde no funcionaba, pero después de revisarlo no veo ningún problema.
Re: Combinar entradas de N columnas en una sola columna basada en entradas únicas¡Gracias Txnelson por la rápida respuesta y solución!
Esto funciona bien, sin embargo, los nombres de mis columnas son algo largos y tengo muchos, así que prefiero no tener que especificar manualmente la lista.
Podría obtener los nombres de las columnas con un simple dt << Obtener nombres de columnas y almacenarlo.
También me gustó la forma en que el superusuario "ms" organizó las entradas en orden alfabético, lo que reduce el número de permutaciones (aunque no lo solicité)
Lo siento por la respuesta demorada.
Re: Combinar entradas de N columnas en una sola columna basada en entradas únicasPrefiero las respuestas anteriores, pero también puedes hacerlo a través de apuntar y hacer clic, lo cual es atractivo para aquellos que no escriben (¡Aparentemente, existen personas que no escriben!)
Al igual que con el enfoque de matriz asociativa, la columna resultante tiene los valores ordenados de menor a mayor.
1) Seleccione las columnas originales y, utilizando la utilidad de combinación de columnas, cree una columna de respuesta múltiple.
2) Seleccione la nueva columna y aplique la utilidad de texto a columnas, asegurándose de marcar la casilla "crear indicadores".
3) Después de seleccionar las 10 nuevas columnas de indicadores, aplique la utilidad de combinación de columnas, asegurándose de marcar la casilla "las columnas son columnas de indicadores".
Re: Combinar entradas de N columnas en una sola columna basada en entradas únicasAquí hay una alternativa a la fórmula de Jim. La diferencia es que la valores únicos de la Las cadenas combinadas se ordenan alfabéticamente en lugar de por orden de aparición.
El número de columnas puede generalizarse configurando el parámetro local norte .
dt = Current Data Table();
dt << New Column("Combined",
Character,
Formula(
Local({dt = Current Data Table(), N = 4},
Concat Items(Associative Array(dt[Row(), 1 :: N]) << get keys, ",")
)
)
);
(Utiliza la notación matricial de la tabla de datos y, por lo tanto, solo lo hará en JMP 13 o posterior)
Re: Combinar entradas de N columnas en una sola columna basada en entradas únicasAquí hay una forma de resolver esta pregunta. He creado una fórmula que combina los valores únicos de una lista de columnas. He adjuntado una tabla de datos de muestra con la fórmula aplicada a la última columna

A continuación se muestra la fórmula utilizada.
VarList = {"One", "Two", "Three", "Four"};
DataList = {};
CountList = {};
DataValue = "";
For( i = 1, i <= N Items( VarList ), i++,
Insert Into( DataList, As Column( VarList[i] ) );
Insert Into( CountList, 0 );
);
For( i = 1, i <= N Items( VarList ) - 1, i++,
For( k = i + 1, k <= N Items( VarList ), k++,
If( DataList[i] == DataList[k],
CountList[k] = CountList[k] + 1
)
)
);
For( i = 1, i <= N Items( VarList ), i++,
If( CountList[i] == 0 & DataList[i] != "",
DataValue = DataValue || "," || DataList[i]
)
);
DataValue = Substr( DataValue, 2 );