¿Obtener entradas distintas de una lista?¿Existe una forma sencilla de obtener las distintas entradas de una lista? (similar al resumen de una tabla agrupando columnas para obtener entradas distintas en esa columna)
El resultado podría ser una lista reducida que contenga sólo las entradas distintas (eliminando las repetidas) o simplemente un número que muestre la cantidad de entradas diferentes.
Antes de escribir un script, me gustaría comprobar si existe una forma/función/fórmula sencilla. No pude encontrar nada en la ayuda de JMP...
Automatización y scriptingAnálisis y modelado de datos básicosCombinación y limpieza de datosExploración y visualización de datosRe: ¿Obtener entradas distintas de una lista?Una forma es utilizar una matriz asociativa.
names default to here(1);
// Create a list
dt=
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
genderList = :sex << get values;
// Get the distinct list of values
distinctList = (associative array(genderList))<<GET keys=""></GET>
{"F", "M"}
Re: ¿Obtener entradas distintas de una lista?¡Genial, esto funciona! ¡Muchas gracias Jim!
Re: ¿Obtener entradas distintas de una lista?El enfoque a través de matrices asociativas es fácil de programar, recordar y aplicar.
Tenga cuidado si desea obtener valores distintos para una lista de millones de valores.
Una solución alternativa:
Guarde los valores en una tabla y utilice la función resumir o las tablas/resumen que mencionó anteriormente.
¿Tal vez, en el futuro, habrá una forma directa / rápida en JMP para calcular valores únicos?
Agregué esta esperanza como subtema a Col N Categorías - y todos los demás...
Por favor apoya la idea y vota : )
Re: ¿Obtener entradas distintas de una lista?En realidad, mi problema es que quiero detectar entradas únicas en una secuencia de cadenas en una tabla. Aquí adjunto un ejemplo: Originalmente tengo la columna "secuencia" (delimitador arbitrario, aquí el delimitador es "|). Mi solución actual es transformar esto en una lista y luego aplicar la solución de Jim con la matriz asociativa. Pero una forma fácil de calcular valores únicos sería muy apreciada...
Re: ¿Obtener entradas distintas de una lista?¡Ah, sí! ¡Aquí es donde duelen las matrices asociativas!
Al final, se cuentan las entradas. ¿Es esto lo que se necesita o también se necesita el paso intermedio (con la lista de entradas únicas)?
Una forma rápida y sencilla de manejar valores únicos. Esperemos que los desarrolladores de JMP reconozcan este tema como algo realmente útil y que se implemente en la próxima versión...
Re: ¿Obtener entradas distintas de una lista?Para mi aplicación actual, solo necesito la cantidad de entradas distintas, no los valores en sí. Pero creo que podría haber muchas más situaciones en las que sería útil reducir una lista a sus entradas únicas.
Y sí, esperemos que se implemente en la próxima versión.:)
Re: ¿Obtener entradas distintas de una lista?Con respecto a la velocidad, acabo de verificar si los pasos intermedios se vuelven más rápidos si reemplazo la parte de la matriz asociativa con una simple
Si (no (contiene(), inserte en (mi lista ...) - no hay beneficio.
New Column( "unique entries",
Expression,
Formula(
Local( {nr = N Rows( Current Data Table() )},
If( Row() == nr,
Caption( "done" )
);
Match( :variant,
1, Associative Array( :list from sequence[Empty()] ) << get keys,
2,
myList = {};
For Each( {entry}, :list from sequence,
If( !Contains( myList, entry ),
Insert Into( myList, entry )
)
);
myList;
);
)
)
)
Para 1 millón de filas, obtengo:

Entonces, 1:0 para matrices asociativas. ¿Alguna idea mejor?
[Another 2+2 seconds are needed for the columns :list from sequence and :N entradas únicas.
So, no real benefit to get into the ms regime for the intermediate step]
Re: ¿Obtener entradas distintas de una lista?- fácil
- rápido
y:
- no codicioso
Intenté comprobar el tiempo con 10 millones de filas y me quedé atascado.
JMP se bloquea y los últimos 60 segundos se ven así:

Re: ¿Obtener entradas distintas de una lista?... así que lo probé con 5 millones de filas y obtuve una idea interesante:

Cuando guardo la tabla, cierro JMP y cargo la tabla nuevamente, ¡el uso de memoria es significativamente menor que lo que se necesita para calcular los valores!
A primera vista pensé que se debía a la matriz asociativa, pero sucede lo mismo cuando uso mylist .
¿Cómo puedo evitar que la fórmula de la columna se coma mi memoria?
TS-00177710
Re: ¿Obtener entradas distintas de una lista?Para que lo sepas, aquí hay una función de valores únicos que escribí hace un tiempo:
/*
Function Name: get_unique_values
Description: Find the unique values in a list. Uses an associative array
Arguments:
in_list List to get unique values for
*/
Get_unique_values = Function( {in_list},
{Default Local},
tmp = [=> 0];
Insert Into( tmp, in_list );
tmp << get keys;
);
Ejemplos de llamadas:
a = {1, 1, 1, 2, 3, 3, 3};
b = get_unique_values(a);
print(b);
c = {"Hello", "World", "John", "Ed", "John", "World"};
d = get_unique_values(c);
print(d);
Producción:
{1, 2, 3}
{"Ed", "Hello", "John", "World"}Re: ¿Obtener entradas distintas de una lista?¿Qué tan complicadas son las secuencias que tienes (¿son solo de una sola letra?)? ¿Sabes de antemano qué podrían ser potencialmente? ¿Y qué tan larga puede ser la secuencia?
Para calcular simplemente la cantidad de entradas, puede utilizar la combinación de N elementos + matriz asociativa y palabras.
N Items(Associative Array(Words(:sequence, "|")))
Parcialmente relacionado Proporciona una forma rápida de obtener valores únicos de objetos JMP (columnas, listas), posiblemente similar al conjunto de Python
Re: ¿Obtener entradas distintas de una lista?
@jthi wrote:N Items(Associative Array(Words(:sequence, "|")))
Quizás me equivoque, pero esta sugerencia se parece mucho a lo que publicó @katharina_l en
https://community.jmp.com/t5/Discussions/Get-distinct-entries-from-a-list/mp/820530/highlight/true#M99918 ? ?
Re: ¿Obtener entradas distintas de una lista?Gracias, Holger. Sí, definitivamente parece la función que estaba buscando. Sería genial si se pudiera implementar como una función estándar en JMP.
Re: ¿Obtener entradas distintas de una lista?Las categorías Col N vendrán con JMP19.
Para obtener artículos únicos hay un deseo aparte: esperar elogios.