Il loop per i nomi delle colonne non funziona<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Sono novizio in JSL. Provo a fare un test Wilcoxon per una serie di colonne. La mia prima colonna è "ID" e la seconda è "SEX" che ho usato come parametro.
Così, ho scritto il seguente codice per fare analisi ed esportare i risultati su un giornale:
dt = Current Data Table ();
column_names = dt << Ottieni nomi di colonne;
for (i = 3, i <= lunghezza (COLUMN_NAMES), i ++,
ow = ow || "
Senso unico(
Y (: Nome ("|| nome_colonna || ")),
X (: SEX),
Wilcoxon Test (1),
Box Plots (0),
Mean Diamonds (0)
); "
);
eval (parse (ow)) << Journal ();
Ma non funziona e non so cosa c'è di sbagliato nel codice.
Ho anche un'altra domanda: "È possibile esportare solo il valore P su un giornale? Ho usato SendToReport (dispatch ..... ) ma ci sono ancora titoli di sezioni nei risultati. Quello di cui ho bisogno è solo il nome della mia colonna e il valore P. È possibile ?"
Mi aiuti per favore.
Grazie in anticipo
Ri: Loop per i nomi delle colonne non funzionaCaro Dave,
Grazie per la tua risposta rapida e dettagliata.
Lavoro con JMP8 e sembra che la struttura sia un po 'diversa. Nella mia versione "NumberColBox (7)" si riferisce al valore p.
Apprezzo anche il tuo suggerimento su come vedere la struttura ad albero. È un grande aiuto.
In bocca al lupo
Ri: Loop per i nomi delle colonne non funzionaEcco come dovrebbe apparire l'output per il secondo script:

Quale versione di JMP stai usando? L'ho eseguito correttamente su v9 e v10.
Dai anche un'occhiata al file di log per vedere se ricevi messaggi di errore.
I valori p vengono estratti facendo riferimento alla casella di visualizzazione appropriata nella struttura ad albero del report utilizzando la seguente riga di codice:
matPValue = owr [NumberColBox (11)] ;
Il nome della casella di visualizzazione - NumberColBox (11) - viene identificato osservando la struttura ad albero ... quindi potresti provare questo per verificare che il nome della casella di visualizzazione sia corretto:
dopo la linea:
owr = ow << report;
Inserisci:
owr << mostra la struttura ad albero;
che darà un risultato simile a questo:

-Dave
Ri: Loop per i nomi delle colonne non funzionaCaro Dave,
Grazie mille per il vostro aiuto. Mi ha davvero salvato il tempo.
Tuttavia, quando ho provato il secondo script, non ho ricevuto risposta, quindi ho cambiato la proprietà della tabella dei risultati in "visible" e ho scoperto anche se ha creato il giusto numero di righe corrispondente al numero di colonne che ho bisogno di analizzare, nessun dato è stato iniettato in tabella dei risultati.
Apprezzo se mi dai un suggerimento su come risolverlo.
Grazie in anticipo per i preziosi aiuti.
Ri: Loop per i nomi delle colonne non funzionaProva questo:
dt = Open ("$ SAMPLE_DATA / Big Class.jmp");
column_names = dt << Ottieni nomi di colonna (numerico, stringa);
jw = New Window ("demo", << journal);
for (i = 1, i <= NItems (COLUMN_NAMES), i ++,
colName = column_names ;
cmd = Expr (
ow = Oneway (
Y (cName),
X (: SEX),
Wilcoxon Test (1),
Box Plots (0),
Diamanti medi (0);
);
owr = ow << report;
owr << Casella di presentazione (1) << Chiudi;
pValues = owr [TableBox (3)];
jw << Aggiungi (ob = Outline Box (colName));
ob << Append (pValues);
ob << Append (owr);
ow << Chiudi la finestra;
);
Sostituisci in (cmd, Expr (cName), colName);
Eval (cmd);
);
o se vuoi solo il nome della colonna e il valore di p ....
dt = Open ("$ SAMPLE_DATA / Big Class.jmp");
column_names = dt << Ottieni nomi di colonna (numerico, stringa);
risultati = Nuova tabella ("Risultati", invisibile,
Nuova colonna ("Nome", carattere),
Nuova colonna ("P-Value", numerico),
Aggiungi righe (NItems (column_names))
);
for (i = 1, i <= NItems (COLUMN_NAMES), i ++,
colName = column_names ;
cmd = Expr (
ow = dt << Oneway (
Y (cName),
X (: SEX),
Wilcoxon Test (1),
Box Plots (0),
Diamanti medi (0);
);
owr = ow << report;
matPValue = owr [NumberColBox (11)];
pValue = matPValue [1];
Colonna (risultati, 1) = colName;
Colonna (risultati, 2) = pValore;
ow << Chiudi la finestra;
);
Sostituisci in (cmd, Expr (cName), colName);
Eval (cmd);
);
risultati << journal;
Chiudi (risultati);
-Dave