Come posso scorrere i nomi delle colonne in un'istruzione for?Salve, sto cercando di creare una nuova colonna formula che esegua il ciclo delle colonne precedenti. Le colonne precedenti sono divise in due gruppi, ogni gruppo ha nomi di colonna che iniziano con una delle due stringhe.Quindi queste intestazioni di colonna terminano con numeri interi, 0, 1, 2,...fino a 22. Vedi lo screenshot pdf allegato del mio codice e fammi sapere perché non funzionerà.Non avendo utilizzato JMP prima di ieri, suppongo che potrei utilizzare "i" o "%i" in modo errato nei nomi delle colonne all'interno dell'istruzione IF.
Grazie in anticipo!
Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?Liz_s, sì, questi si riferiscono ai numeri di colonna.
Dal menu principale di JMP, selezionare Guida > Libri > Guida allo scripting e andare a pagina 439 (o pagina successiva). Questa è una sezione del capitolo 9 Tabelle di dati , sezione 1, Lavorare con oggetti tabella dati , argomento Accesso ai valori dei dati . Leggi l'intera sezione per metodi alternativi per accedere e assegnare valori ai dati.
Commento: la chiave del tuo compito era trovare quale colonna di decisione conteneva "Immatricolato" per ciascuna riga. Il ciclo di 22+ volte per ogni riga comporta un sacco di annidamento. La chiave qui per saperne di più è utilizzare Aiuto > Indice di scripting > Funzioni per conoscere Contiene.
Contiene( lista|stringa, stringa corrispondente) restituisce la prima posizione in cui si trova. Nota: Loc() restituisce tutte le posizioni in un elenco o matrice in cui viene trovato il valore corrispondente. Capire che dt[riga, c1::cn] dove le colonne da c1 a cn sono caratteri restituirà un elenco dei valori della tabella.Contiene() troverà la posizione (k), quindi questa sarà la posizione corretta per la colonna dell'organizzazione.
La chiave è "conoscere i tuoi strumenti", come accedere, assegnare e conoscere le tue funzioni.
Buona fortuna con il tuo viaggio di apprendimento di JMP.
Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?CIAO,
Questo script ha funzionato perfettamente e grazie per avermi aiutato a superare la mia scarsa familiarità con l'editor di formule JMP.Questo codice elegante era più quello che avevo in mente quando ho iniziato a provare a scrivere il mio ciclo.Solo un'ultima domanda, potresti spiegare la tua selezione dei numeri 6 e 10 all'interno della dichiarazione dell'Indice?
Immagino che i numeri di indice 6 e 10 fossero perché c'erano 5 di ciascuno dei due tipi di colonne nel tuo file di test e 10 colonne in totale?Quindi 6 inizia l'insieme delle colonne decisionali e 10 termina le colonne decisionali?(Ho deciso di evitare di indovinare e di chiedertelo e basta.)
Sentirsi grato!
Liz_S
Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?Ecco la formula che funziona per la tabella dati di immatricolazione, questo è solo testo JSL.
k = Contains( Current Data Table()[Row(), Index( 6, 10 )], "Matriculated" );
If( k > 0,
Column( "designation_organization_" || Char( k ) )[Row()],
"None"
);
Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?La prima cosa che ho provato è stata copiare e incollare la formula della casella blu in una nuova finestra di script di colonna. Non si incolla; è come se le informazioni nella casella blu della soluzione fossero un'immagine o una schermata.
Sì, so come fare doppio clic in una casella di formula per poter digitare uno script. Non riesco ancora a capire come aggiungere indici di righe e colonne a un'istruzione Contain. Ma grazie ancora per le parti precedenti della tua risposta.Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?A volte inserire una formula con più affermazioni è doloroso ed è meglio digitarla.
Quando fai doppio clic sulla formula si apre una finestra di script.Potrebbe volerci un po' di pratica. Magari copia la formula che utilizza i numeri di colonna e incollala nella casella blu, quindi fai doppio clic per visualizzare l'editor dello script.
Spero che aiuti.
Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?Ciao gzmorgan0,
La prima sceneggiatura che hai scritto per la tabella che hai allegato fa quello che vorrei ed è geniale!Potrò finire il mio progetto al lavoro oggi.Grazie!Tuttavia, poiché per me questo è il terzo giorno in JMP, vorrei capire come scrivere l'ultima opzione che hai scritto utilizzando l'editor di formule in JMP.Quando ho provato a creare la nuova colonna nella tabella dopo aver eseguito il primo script, ho riscontrato due problemi:
1.) Non ho potuto utilizzare due funzioni indipendenti nell'editor delle formule di colonna in due istruzioni separate. Ho iniziato con il Contiene funzione e aggiunto un ";" dopo ciò.Ma poi quando ho cliccato su Se funzione, ha incorporato automaticamente l'istruzione Contiene.Strano.Non voglio Contiene incorporato all'interno Se o vice versa.
2.) Non ho visto come aggiungere row() e Index(6,10) a Contiene ( Tabella dati corrente (),...L'opzione ^ mi ha dato una nuova "parte" separata da virgole: Contiene ( Tabella dati corrente() , parte , "Immatricolato").Come hai inserito le opzioni di righe/colonne nel tuo Contiene funzione nell'editor delle formule?
Ho seguito i tutorial del kit di benvenuto ma non ho trovato informazioni sufficienti sullo scripting e sull'utilizzo dell'editor di formule in una nuova colonna.Conosci per caso un video Youtube che potresti consigliare ai principianti?Ma apprezzerei anche un'altra tua risposta se hai tempo.
Grazie molto!
Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?Esistono diversi metodi per realizzare ciò che penso tu abbia bisogno. Prima di tutto devi comprendere la sintassi JMP per fare riferimento alle colonne.Ad esempio, se desideri creare una nuova colonna che scelga casualmente l'organizzazione 1-5, ecco la formula della colonna
i = Random Integer(1,5);
Column( "designation_organization_" || Char( i ) )[Row()];
|| è l'operatore di concatenazione, Char(i) è la stringa. Quindi le parentesi rappresentano la riga della colonna specificata.
Ho allegato una tabella. Non ho idea di come sia il tuo tavolo, ma forse questo script ti aiuterà.
Apri la tabella allegata.Quindi esegui questo script
dt=data table("matriculation");
cnmes = dt << get column names("string");
dcols = {}; //create a list of decision columns
for(i=1, i<=nitems(cnmes), i++,
if( contains(cnmes[i], "_decision_"), Insert into(dcols, cnmes[i]) )
);
//create a new column
matcol = dt << New Column("Major", Character);
//rowwise
for(i=1, i <= nrow(dt) , i++,
k = Contains(dt[i,dcols], "Matriculated"); <BR /> //dt[ i, dcols] is a list of values in the decision columns from row i<BR /> //contains returns the position in the list for "Matriculated"
matcol[i] = if(k>0, Column("designation_organization_" || char(k))[i], "None" );<BR /> //if k > 0, "Matriculated" was found, so assign to matcol the organization for the corresponding k
);Tieni presente che JMP consente l'utilizzo dei numeri di colonna. Ecco uno script, per una nuova colonna per la tabella allegata, che utilizza i numeri di colonna

Ri: Come posso scorrere i nomi delle colonne in un'istruzione for?Il tuo PDF è difficile da leggere.Solo una delle 22 colonne avrà "Immatricolata"? Oppure saranno diversi e vuoi tutti i codici dell'organizzazione?