Sugerencia JSL: encontrar valores únicos en una listaUna de las grandes cosas de asistir a la JMP Discovery Summit como desarrollador está escuchando preguntas y sugerencias de personas con tantas aplicaciones diferentes de JMP . Una pregunta de JMP Scripting Language (JSL) surgió tres veces, así que vale la pena compartirla. La pregunta es: "¿Cómo elimino los elementos duplicados de una lista?"
Es decir, dada la lista. {"Me gusta", "No me gusta", "Me gusta", "Neutral", "Me gusta", "Me gusta"} el resultado debe ser {"no me gusta", "me gusta", "neutral"} (orden no importante).
Probablemente hay muchas formas razonables de hacerlo en JSL (otras ideas son bienvenidas), pero la más sencilla que se me ocurre es usar un matriz asociativa . Una matriz asociativa es una colección de pares clave-valor donde las claves son únicas. Si agrega más de un par clave-valor con la misma clave, solo se conserva uno de ellos (el último). Si no le importan los valores, entonces la matriz asociativa es efectivamente un conjunto de claves únicas.
En JSL, puede crear una matriz asociativa de varias maneras, pero la única de interés aquí es crearla a partir de una lista. La matriz asociativa resultante tratará los valores de la lista como claves y solo almacenará las claves únicas. Luego podemos pedirle a la matriz asociativa una lista de sus claves.
respuestas = { "me gusta" , "disgusto" , "me gusta" , "neutral" , "disgusto" , "me gusta" } ;
respuestas conjunto = Matriz asociativa ( respuestas ) ;
único respuestas = conjunto de respuestas << Obtener llaves ;
Resultado: {"no me gusta", "me gusta", "neutral"}
Si no ha descubierto matrices asociativas en JMP, explore los documentos y los ejemplos en el Índice de scripts de JSL.
Ahora es su turno: ¿De qué otras maneras puede obtener valores únicos de una lista? Se me ocurre uno usando la función Summarize () ...
James Cultra escribió: Este método funciona mejor para matrices ... James Cultra escribió:
Este método funciona mejor para matrices ya que la función de matriz asociativa parece redondear los valores en la matriz (por lo tanto, la lista única no coincide con los valores reales en la matriz)
Xan Gregg escribió: Si iteras a través de un ar asociativo ... Xan Gregg escribió:
Si recorre una matriz asociativa (con los mensajes Primero y Siguiente), las entradas se devuelven en el orden de las claves ordenadas. Si los valores son únicos, puede usarlos como claves, pero si no, creo que requerirá una clasificación explícita. Podrías probar el Foro de la Comunidad JMP Para ideas sobre este último.
Eric Wittry escribió: Si tengo un par clave => valor, y quiero ... Eric Wittry escribió:
Si tengo un par clave => valor, y quiero ordenar los valores y devolver las claves en ese orden (* basado en el valor ordenado), ¿cómo haría eso en JMP? Gracias eric
Leighton Spadone escribió: // Funciones de matriz JSL usadas para re ... Leighton Spadone escribió:
// Funciones de la matriz JSL utilizadas para reducir una lista a valores únicos;
// Una lista con valores duplicados;
responde = {"me gusta", "no me gusta", "me gusta", "neutral", "me gusta", "me gusta"};
// Colapse una matriz de diseño a una sola fila con 1 para la primera aparición y 0 para duplicados;
DesignMatrix = VMax (diseño (respuestas, respuestas));
// Resultado: DesignMatrix = [1 1 0 1 0 0];
// Subconjunto Lista de respuestas a valores únicos;
UniqueAnswers = answers [Loc (DesignMatrix)];
// Resultado: UniqueAnsers = {"dislike", "like", "neutral"};
Pmroz escribió: Encontrar valores únicos en una lista surgió en t ... Pmroz escribió:
Encontramos valores únicos en una lista
En el foro de discusión JMP hace un tiempo. Aquí está la función
que utilizo, que se basa en la técnica que mostró Xan .:
/ *
Nombre de la función: get_unique_values
Descripción: Encuentra los valores únicos en una lista.
Utiliza una matriz asociativa.
Argumentos:
in_list   Lista para obtener valores únicos para
* /
Get_unique_values = Función ( { en lista } , { Predeterminado local } ,
 tmp = El => 0 ] ;
 Insertar en ( tmp, in_list ) ;
 tmp << obtener claves;
) ;
Guillaume escribió: Otra forma es usar la declaración de bucle y ... Guillaume escribió:
Otra forma es usar la instrucción de bucle y la función Loc () para encontrar valores únicos
responde = {"me gusta", "no me gusta", "me gusta", "neutral", "me gusta", "me gusta"};
unique_answers = List ();
Para (i = 1, i <= Nitems (respuestas), i ++,
Si (Nrows (Loc (unique_answers, respuestas [i])) == 0,
InsertInto (unique_answers, respuestas [i])
);
);
Michael Crotty escribió: Otra función JSL incorporada que ... Michael Crotty escribió:
Otra función JSL incorporada que puede ayudar con este problema es la función Design ():
responde = {"me gusta", "no me gusta", "me gusta", "neutral", "me gusta", "me gusta"};
diseño (respuestas, <