JSL-Sum: qty ordinati per righe con la stessa stringa in: city<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Sono nuovo di scripting e sono in perdita totale cercando di trovare tutorial informativi su JSL. Apprezzerò davvero qualsiasi aiuto con il mio problema.
Fondamentalmente, ho bisogno di ordinare per: Città e riassumere il valore in ciascun elemento: Qtà e quindi visualizzarlo. Il problema è che ho bisogno di mettere dinamicamente un elenco di tutte le diverse stringhe in: City e quindi riassumere tutti i valori numerici in: Qtà per quelle righe che hanno stringhe corrispondenti nella colonna: City.
Quindi per esempio il tavolo sarebbe simile a questo
tableEx =
| Città | Quantità |
|---|
| a1 | 100 |
| a2 | 10 |
| a9 | 29 |
| a1 | 99 |
| a4 | 20 |
| a7 | 91 |
| a2 | 60 |
| a100 | 33 |
| a500 | 30 |
| a100 | 14 |
| A99 | 2000 |
| eccetera... | eccetera... |
Questa prossima parte non ha bisogno di essere letta per risolvere il mio problema, ma descrive in dettaglio come desidero risolvere il problema nella mia mente. Vorrei poter fare qualcosa del genere;
List_Of_CityNames = new List ();
interruttore = falso;
Foreach Row r in tableEx
{
Foreach String city in List_Of_CityNames
{
se (r.Get (Città) == città)
switch = true; // significa che questa riga: la voce City è già presente nell'elenco, quindi non è necessario aggiungerla.
}
if (switch == false) // se questa riga: City non è stata ancora inserita nella lista, allora viene eseguita
{
List_Of_CityNames.Add (r.Get (City)); // città aggiunta alla lista
}
interruttore = falso; // cambia reimpostato su Città non ancora trovato in elenco
}
Se questo funzionasse avrei fatto la lista delle tuple e ne ho fatto una stringa + int pair per permettermi di riassumere la quantità di città corrispondenti anche nel ciclo precedente. Quindi lo stamperei semplicemente creando una nuova tabella () se potessi.
Dopo aver raccolto le informazioni di cui sopra avrei quindi bisogno di stamparlo, qualcuno potrebbe sapere come creare una tabella in base alla dimensione dinamica della lista che può o non può essere una parte della prima soluzione.
dtSolution = New Table ("Soluzione",
Aggiungi riga (/ * valore numerico che rappresenta il numero di diversi nomi di città * /),
Nuova colonna ("/ * prima città nell'elenco * /", "Continuo", Imposta valori (elenco (/ * variabile che rappresenta la somma: Qtà per le stesse città * /))),
Nuova colonna ("/ * seconda città nell'elenco * /", "Continuo", Imposta valori (elenco (/ * variabile che rappresenta la somma: Qtà per le stesse città * /))),
Nuova colonna ("/ * terza città nell'elenco * /", "Continuo", Imposta valori (elenco (/ * variabile che rappresenta la somma: Qtà per le stesse città * /))),
Nuova colonna ("/ * quarta città nell'elenco * /", "Continuo", Imposta valori (elenco (/ * variabile che rappresenta la somma: Qtà per le stesse città * /))),
Nuova colonna ("/ * quinta città nell'elenco * /", "Continuo", Imposta valori (elenco (/ * variabile che rappresenta la somma: Qtà per le stesse città * /))),
Nuova colonna ("/ * sesta città nell'elenco * /", "Continuo", Imposta valori (elenco (/ * variabile che rappresenta la somma: Qtà per le stesse città * /))),
ecc. fino a quando ogni città è stata aggiunta alla tabella // Dopo aver creato la nuova tabella, probabilmente dovrei usare un ciclo foreach per aggiungere ogni riga una alla volta alla tabella in base alla lista creata in pt.1
);
Apprezzo davvero ogni aiuto che posso ottenere. Ti ringrazio anche se hai finito per leggere tutto questo.
Grazie,
Loysius
Ri: JSL-Sum: qty ordinati per righe con la stessa stringa in: cityLoysius,
Avrei dovuto ricordare che Tabulate appare nel menu Tabelle in JMP 10. È stato spostato nel menu Analizza a partire da JMP 11.
-Michael
Ri: JSL-Sum: qty ordinati per righe con la stessa stringa in: cityIl piccolo triangolo rosso nella finestra del tabulato consente di salvare la tabulazione come tabella di dati.
Utilizzando la soluzione di Michael, dopo aver creato la tabulazione desiderata, fare clic sul triangolo rosso e selezionare "Crea nella tabella dati". Questo essenzialmente imita ciò che ho fatto in JSL.
Ri: JSL-Sum: qty ordinati per righe con la stessa stringa in: cityGrazie Michael e PMroz!
Ho trovato Tabulate nel menu Tabelle ma grazie mille per il tuo feedback. Non sapevo che fosse possibile copiare la versione JSL delle tabelle negli appunti e incollarle nel mio script.
Purtroppo non copiano pasta in modo che siano direttamente utilizzabili, devono comunque essere modificati prima di funzionare. Nel qual caso la soluzione di PMroz mostra la sintassi per far funzionare tutto correttamente.
Cordiali saluti,
Loysius
Ri: JSL-Sum: qty ordinati per righe con la stessa stringa in: cityQui è come un programma JSL:
// Crea una tabella di esempio
dt = Nuova tabella ( "CityQty" , Aggiungi righe ( 11 ) ,
Nuova colonna ( "Città" , Personaggio , Nominale ,
Imposta valori ( { "A1" , "A2" , "A9" , "A1" , "A4" , "A7" , "A2" , "A100" , "A500" , "A100" , "A99" } ) ) ,
Nuova colonna ( "Quantità" , Numerico , Continuo , Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 100 , 10 , 29 , 99 , 20 , 91 , 60 , 33 , 30 , 14 , 2000 ] ) )
) ;
// Crea una tabulazione invisibile
Dtab = dt << disporre in tabelle (
Mostra il pannello di controllo ( 0 ) ,
Aggiungi tabella (
Tabella delle colonne ( Colonne di analisi ( : Quantità ) ) ,
Tabella delle righe ( Raggruppamento di colonne ( : Città ) )
) , invisibile ,
) ;
// Converti la tabulazione in una tabella
dt_new = Dtab << Inserisci nella tabella dati ;
// Elimina la tabulazione
Dtab << chiudi la finestra ;
Ri: JSL-Sum: qty ordinati per righe con la stessa stringa in: citySe hai le colonne City e Qty in una tabella dati, potresti probabilmente usare Tabulate (nel menu Analizza).
Vai a Analizza> Tabulazione.
Trascina la città su "Rilascia la zona per le righe".
Trascina Qty sull'intestazione dove ora dice "N".
Fai clic su Fine.
Penso che questo dovrebbe darti un elenco ordinato di città con le relative somme della Qtà corrispondenti.
Per riprodurlo in un secondo momento tramite uno script, puoi utilizzare il menu del triangolo rosso in Tabulate per andare a script> Salva script nella finestra dello script (o salvarlo in varie altre posizioni, inclusa la tabella dati originale stessa).
Spero che sia d'aiuto,
Michael