Suggerimento JSL: trovare valori univoci in una listaUna delle grandi cose di frequentare il JMP Discovery Summit come sviluppatore sta ascoltando domande e suggerimenti da persone con così tante diverse applicazioni di JMP . Una domanda JMP Scripting Language (JSL) è comparsa tre volte, quindi vale la pena condividere. La domanda è: "Come rimuovo gli elementi duplicati da un elenco?"
Cioè, data la lista {"like", "disgusto", "mi piace", "neutro", "non mi piace", "mi piace"} il risultato dovrebbe essere {"disgusto", "mi piace", "neutro"} (ordine non importante).
Ci sono probabilmente molti modi ragionevoli per farlo in JSL (altre idee sono benvenute), ma il modo più semplice a cui posso pensare è di usare un matrice associativa . Un array associativo è un insieme di coppie chiave-valore in cui le chiavi sono uniche. Se aggiungi più di una coppia chiave-valore con la stessa chiave, solo una di queste viene mantenuta (l'ultima). Se non ti preoccupi dei valori, allora l'array associativo è effettivamente un insieme di chiavi univoche.
In JSL, è possibile creare un array associativo in diversi modi, ma l'unico di interesse qui è quello di crearlo da un elenco. L'array associativo risultante tratterà i valori dell'elenco come chiavi e memorizzerà solo le chiavi univoche. Quindi possiamo chiedere all'array associativo un elenco delle sue chiavi.
risposte = { "piace" , "Antipatia" , "piace" , "neutro" , "Antipatia" , "piace" } ;
risposte impostato = Array associativo ( risposte ) ;
unico risposte = risposte impostate << Ottieni chiavi ;
Risultato: {"non mi piace", "mi piace", "neutrale"}
Se non hai scoperto array associativi in JMP, esplora i documenti e gli esempi nell'indice di scripting JSL.
Ora tocca a te: in quali altri modi puoi ottenere valori univoci da un elenco? Posso pensare a uno usando la funzione Summarize () ...
James Cultra ha scritto: Questo metodo funziona meglio per le matrici ... James Cultra ha scritto:
Questo metodo funziona meglio per le matrici poiché la funzione di array associativo sembra arrotondare i valori nella matrice (quindi l'elenco univoco non corrisponde ai valori effettivi nella matrice)
Xan Gregg ha scritto: Se si itera attraverso un'ar associativo ... Xan Gregg ha scritto:
Se si scorre su un array associativo (con i messaggi Primo e Avanti), le voci vengono restituite nell'ordine delle chiavi ordinate. Se i valori sono univoci, è possibile utilizzarli come chiavi, ma in caso contrario, penso che richiederà un ordinamento esplicito. Potresti provare il Forum della comunità JMP per idee su quest'ultimo.
Eric Wittry ha scritto: Se ho una chiave => coppia di valori, e io wan ... Eric Wittry ha scritto:
Se ho una chiave => coppia di valori, e voglio ordinare i valori e restituire le chiavi in quell'ordine (* in base al valore ordinato), come dovrei farlo in JMP. Grazie Eric
Leighton Spadone ha scritto: // Le funzioni JSL Matrix utilizzate per ... Leighton Spadone ha scritto:
// Funzioni della matrice JSL utilizzate per ridurre un elenco a valori univoci;
// Un elenco con valori duplicati;
risposte = {"mi piace", "non mi piace", "mi piace", "neutro", "non mi piace", "mi piace"};
// Colapse una matrice di disegno in una riga singola con 1 per la prima occorrenza e 0 per i duplicati;
DesignMatrix = VMax (design (risposte, risposte));
// Risultato: DesignMatrix = [1 1 0 1 0 0];
// Sottoinsieme Elenco di risposte a valori univoci;
UniqueAnswers = risposte [Loc (DesignMatrix)];
// Risultato: UniqueAnsers = {"non mi piace", "mi piace", "neutro"};
Pmroz ha scritto: Trovare valori unici in una lista è arrivato in t ... Pmroz ha scritto:
Trovando valori unici in una lista si avvicinò
nel forum di discussione JMP qualche tempo fa. Â Ecco la funzione
che uso, che si basa sulla tecnica mostrata da Xan:
/ *
Nome funzione: get_unique_values
Descrizione: trova i valori univoci in un elenco
Utilizza un array associativo
Argomenti:
in_list  Elenco per ottenere valori univoci per
* /
Get_unique_values = Funzione ( { in_list } , { Locale predefinito } ,
  tmp = [ => 0 ] ;
   Inserto in ( tmp, in_list ) ;
 «tmp << ricevi le chiavi;
) ;
Guillaume ha scritto: Un altro modo è usare l'istruzione loop e ... Guillaume ha scritto:
Un altro modo è utilizzare l'istruzione loop e la funzione Loc () per trovare valori univoci
risposte = {"mi piace", "non mi piace", "mi piace", "neutro", "non mi piace", "mi piace"};
unique_answers = List ();
Per (i = 1, i <= Nitems (risposte), i ++,
If (Nrows (Loc (unique_answers, answers [i])) == 0,
InsertInto (unique_answers, risposte [i])
);
);
Michael Crotty ha scritto: Un'altra funzione JSL integrata che ... Michael Crotty ha scritto:
Un'altra funzione JSL integrata che può aiutare con questo problema è la funzione Design ():
risposte = {"mi piace", "non mi piace", "mi piace", "neutro", "non mi piace", "mi piace"};
design (risposte, <