Come utilizzare Columnlist per impilare molte colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti, voglio leggere i nomi delle colonne e salvarli come elenco di colonne.... utilizzando questo elenco posso impilare queste colonne multiple in un unico comando invece dell'impilamento manuale come il codice mostrato di seguito?
dt_L5 << Pila(
colonne(
:Nome( "MISC_L5_Test230_2(1)" ),
:Nome( "MISC_L5_Test230_2(2)" ),
:Nome( "MISC_L5_Test230_2(3)" ),
:Nome( "MISC_L5_Test230_2(4)" ),
:Nome( "MISC_L5_Test230_2(5)" ),
:Nome( "MISC_L5_Test230_2(6)" ),
:Nome( "MISC_L5_Test230_2(7)" ),
:Nome( "MISC_L5_Test230_2(8)" ),
.
.
.
.
:Nome( "MISC_L5_Test230_2(125)" )
),
Colonna Etichetta sorgente( "Etichetta" ),
Colonna dati in pila ("Dati"),
Tabella di uscita("L5")
);
Voglio fare una cosa del genere:
clist=dt_L5<
ncols = N elementi(clist);
dt_L5 << Pila(
colonne(
for(i=1,i<=ncols,i++,
lista_nomi = lista ;
/* COME DEVO CHIAMARE IL " :Nome("elenco_nomi") " Qui ?? */
);
Colonna Etichetta sorgente( "Etichetta" ),
Colonna dati in pila ("Dati"),
Tabella di uscita("L5")
);
Ri: Come utilizzare Columnlist per impilare molte colonne
CIAO,
il tuo script finale assomiglia a questo?
Cancella valori globali (); /* cancella la memoria residente dalle esecuzioni precedenti*/
/* Apri il tuo file*/
dt=aperto(
Seleziona file(
"Seleziona un file *.csv",
Ottieni la directory corrente(),
{"Tutti i file JMP|jmp;jsl;jrn;csv;txt", "Tutti i file|*"}
)
);
attendere(0);
nc_dt = N Col (); /*recupera il numero di colonne in un file*/
attendere(0);
clist = dt < ncols = N elementi(clist);
attendere(0);
tlista={};
for(i=2,i<=ncols,i++,
inserisciin(tlista,clist );
);
attendere(0);
dt2 < colonne(eval(tlista)),
Colonna Etichetta sorgente( "Etichetta" ),
Colonna dati in pila ("Dati"),
Tabella di uscita ("DT5")
);
Ri: Come utilizzare Columnlist per impilare molte colonneGrande! Grazie MS... Ho JMP8.0 forse è questo il problema
Ri: Come utilizzare Columnlist per impilare molte colonneOK. Per me funziona anche senza eval(). JMP 9.0.3 per Mac.
Funziona anche questo, ad esempio creando la lista all'interno dell'argomento columns(). Può essere utile se non è necessario il parametro più avanti nello script. Tuttavia, l'indicazione chiara delle variabili semplifica la lettura e il debug del codice.
dt1_L0 << pila (
colonne ( dt1_L0 << ottenere i nomi delle colonne ) ,
Colonna Etichetta origine ( "Etichetta" ) ,
Colonna dati in pila ( "Dati" ) ,
Tabella di uscita ( "L5" )
) ;
Ri: Come utilizzare Columnlist per impilare molte colonneuna ricerca su questo forum mi ha indirizzato alla risposta ..... è necessario utilizzare eval(list).
collisione = dt1_L5 << ottenere i nomi delle colonne ;
dt1_L0 << pila (
colonne ( eval ( collisione ) ) ,
Colonna Etichetta origine ( "Etichetta" ) ,
Colonna dati in pila ( "Dati" ) ,
Tabella di uscita ( "L5" )
) ;
Grazie per il vostro sostegno!
Ri: Come utilizzare Columnlist per impilare molte colonneGrazie ancora! ... Dopo il comando stack ricevo il seguente messaggio nella finestra di registro
"Colonna non trovata nell'accesso o nella valutazione di 'Argomento errato'
Vuoto()"
E non vedo l'output di alcuna tabella impilata... :-s Apprezzo davvero il tuo aiuto!
Come utilizzare Columnlist per impilare molte colonneOppure condizionalmente in questo modo:
tlist = {} ;
per ( io = 1 , io <= ncols , io ++,
Se ( io > 3 ,
inserire ( tlist , collisione [ io ]) ;
) ;
) ;
o senza condizione ma con un'iniziale modificata io :
tlist = {} ;
per ( io =4 , io <= ncols , io ++,
inserire ( tlist , collisione [ io ]) ;
) ;
Ri: Come utilizzare Columnlist per impilare molte colonneQualcosa come questo ?? ....
collisione = dt1_L5 << ottenere i nomi delle colonne ;
/*L'intento qui è salvare un nuovo elenco eliminando i primi 3 dall'elenco precedente*/
ncols = N elementi(collist);
for(i=1;i<=ncols;i++,
se(i>3,
tlist=collista ;
);
);
dt1_L0 << pila (
colonne ( ( tlist ) ) ,
Colonna Etichetta origine ( "Etichetta" ) ,
Colonna dati in pila ( "Dati" ) ,
Tabella di uscita ( "L5" )
) ;
Non so nemmeno se l'affermazione "if" sia corretta qui ... scusate la mia ignoranza
Come utilizzare Columnlist per impilare molte colonneCiao MS,
Grazie per la risposta rapida. Sono un principiante di JSL, quindi non conosco la lingua. Buono a sapersi che lo stack accetta list come argomento.
Posso espandere ulteriormente la domanda e chiedere... come possiamo selezionare solo poche colonne da impilare dall'elenco? Ad esempio, non voglio impilare le prime 3 colonne. A questo scopo, posso creare un nuovo elenco che memorizzerà i nomi delle colonne richieste (elimina i primi 3 nomi delle colonne dalla lista).
Sì, ho trovato una soluzione alla mia voce precedente, quindi l'ho cancellata
Grazie mille!
Ri: Come utilizzare Columnlist per impilare molte colonneStack prende una lista come argomento, quindi qui può essere fatto in modo molto più semplice.
collisione = dt1_L5 << ottenere i nomi delle colonne ;
dt1_L0 << pila (
colonne ( ( collisione ) ) ,
Colonna Etichetta origine ( "Etichetta" ) ,
Colonna dati in pila ( "Dati" ) ,
Tabella di uscita ( "L5" )
) ;
Evita i cicli for all'interno dei comandi della piattaforma. A proposito, ho provato a inviare una risposta alla tua domanda precedente, ma è stata eliminata prima di premere "Aggiungi risposta". Probabilmente hai già trovato una soluzione, ma ecco la mia opinione al riguardo. Ancora una volta, i cicli for all'interno delle piattaforme potrebbero non funzionare sempre poiché alcuni comandi potrebbero non valutare l'argomento (ad esempio è richiesta una stringa tra virgolette).
lista mensile = { 4 , 5 , 7 , 9 , 11 , 12 } ;
vento = Nuova finestra ( "Bivariato" ,
dt1_L0 << Bivariato ( Y ( : Dati ) , X ( : Prezzo ) , Di ( : MESE ) )
) ;
Per ( io = 1 , io <= N articoli ( lista mensile ) , io ++,
vento [ 1 , io , Scatola per telaio ( 1 )] << { Dimensione della cornice ( 633 , 249 ) ,
Legenda della riga ( : PIANI ,
Tema del colore ( "Predefinito JMP" ) ,
Tema dei marcatori ( "Standard" ) ,
)}
) ;