Script di sottoinsiemi<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salve utenti JMP,
Sono in grado di generare script per creare sottoinsiemi di file di dati di grandi dimensioni, ma poi devo nominarli manualmente ed eseguirli tutti individualmente tramite un secondo e un terzo script di sottoinsieme. C'è un modo per eseguire in modo iterativo il comando subset e salvare i file per includere le definizioni del sottoinsieme?
Ad esempio: Subset file "Colors" per colonna1 (red, blue, green) per produrre e salvare i file: Colors.red.jmp, Colors.blue.jmp, Colors.green.jmp e poi sottoinsiemi per column8 (bright, light , scuro) per creare e salvare file
Colori.rosso.bright.jmp, Colori.rosso.luce.jmp, Colori.rosso.dark.jmp, Colori.blu.bright.jmp, Colori.blu.luce.jmp, Colori.blu.dark.jmp, Colori. verde.luminoso.jmp, Colori.verde.luce.jmp, Colori.verde.scuro.jmp.
Le posizioni delle colonne varierebbero.
Grazie !!!
Ri: Sottoinsieme di scriptingAncora non ha funzionato. Ho aggiunto anche più tempo (30), (90), ecc. Sono stato in grado di proteggere i file, il che significa che non potevo chiuderli senza indicare se dovevano essere salvati o meno, ma la denominazione era ancora sottoinsieme del sottoinsieme di myfile 2 3.jmp, ecc. Sto pensando che l'elenco delle variabili del sottoinsieme sia in qualche modo disattivato. Risolverò altri problemi durante il fine settimana e posso chiedere aiuto qui a qualcuno abituato a lavorare con la nostra versione di JMP.
Grazie mille per il tuo aiuto e i tuoi consigli e buon fine settimana, MS!
Ri: Sottoinsieme di scriptingPotrebbe essere un problema di prestazioni. Provare a inserire un comando Wait(0) in entrambi i cicli For per assicurarsi che le tabelle siano complete prima che JMP tenti di salvarle.
Ri: Sottoinsieme di scriptingQuesto è strano. Il percorso è corretto perché l'ho usato per aprire un dt nella stessa directory. Crea tutti i file, ma hanno nomi come "Sottoinsieme di sottoinsieme di MyFile 2 3.jmp", "Sottoinsieme di sottoinsieme di MyFile 2 2.jmp", ecc. Questi file sono esattamente ciò che voglio ed è sorprendente che questo script li crea, sfortunatamente non li nomina correttamente e non li salva. Nel peggiore dei casi, li nomino manualmente, il che mi fa comunque risparmiare un sacco di tempo!
Grazie per il tuo impegno.
Eric
Ri: Sottoinsieme di scriptingHo appena provato lo script in JMP 9.0.3 e ha funzionato perfettamente, come in JMP 10.
Controlla la tua variabile di percorso. Deve essere una stringa e iniziare e finire con /.
Ad esempio sul mio Mac funziona: myPath = "/Users/MS/Desktop/"
Ri: Sottoinsieme di scriptingCiao SM,
Era molto vicino!Ha creato tutti i sottoinsiemi, ma non ha salvato nessuna delle tabelle. Ho ricevuto questo messaggio: Impossibile salvare il file. Destinazione dati sconosciuta.
Sto usando JMP 9 quindi mi chiedo se c'è una differenza in un comando per creare il file o sto facendo qualcosa di sbagliato? Ho inserito il percorso corretto nello script.
Grazie,
Eric
Ri: Sottoinsieme di scriptingAlmeno in JMP 10 è presente una casella di controllo "Sottoinsieme di". Se selezionato, i sottoinsiemi per ogni livello delle colonne selezionate vengono generati automaticamente. È facile implementare tale funzione in JSL se è noto il numero di colonne. Tuttavia, generalizzare questo è stato più complicato di quanto immaginassi.
Questo approccio, basato sull'inserimento dei sottoinsiemi generati in sequenza in liste (all'interno di liste) sembra funzionare però:
//Tabella di esempio
dt = Nuova Tavola ( "Colore" ,
Aggiungi righe ( 12 ) ,
Nuova Colonna ( "Colore" ,
Carattere ,
Nominale ,
Imposta valori ( { "rosso" , "rosso" , "rosso" , "rosso" , "blu" , "blu" , "blu" , "blu" , "blu" , "verde" , "verde" , "verde" } )
) ,
Nuova Colonna ( "Intensità" ,
Carattere ,
Nominale ,
Imposta valori (
{ "luminoso" , "luminoso" , "buio" , "leggero" , "leggero" , "leggero" , "leggero" , "buio" , "buio" , "buio" , "leggero" , "luminoso" }
)
) ,
Nuova Colonna ( "Fine" ,
Carattere ,
Nominale ,
Imposta valori (
{ "Opaco" , "Vuoto" , "Opaco" , "Vuoto" , "Opaco" , "Vuoto" , "Opaco" , "Vuoto" , "Opaco" , "Vuoto" , "Opaco" , "Vuoto" }
)
) ,
Nuova Colonna ( "Colensità" , Carattere , Nominale )
) ;
Per ogni riga ( : Colensità = Colore || Intensità || Fine ) ; // Solo per verificare che funzioni...
// Termina la tabella di esempio
// Lo script inizia qui
colonne = { Colore , Intensità , Fine } ; // Qualsiasi numero di sottoinsiemi per colonne (in ordine gerarchico)
nt = Tabella N () ; //numero di tabelle attualmente aperte
sottolista = Elenco di valutazione ( { dt << sottoinsieme ( di ( colonne [ 1 ] ) )} ) ; //Sottoinsiemi di primo livello
// Crea in modo ricorsivo i sottoinsiemi di livello inferiore
Per ( io = 2 , io <= N articoli ( colonne ) , io ++,
Inserire ( sottolista , Elenco di valutazione ( { Valutazione ( sottolista [ io - 1 ] ) << sottoinsieme ( di ( colonne [ io ] ) )} ) )
) ;
// assegna un nome e salva tutti i sottoinsiemi
il mio cammino = "sentiero" ; //passa al percorso desiderato
Per ( io = 1 , io <= Tabella N () - nt , io ++,
tv = Tabella dati ( io ) << ottenere i nomi delle variabili di tabella ; // I livelli vengono memorizzati come variabili di tabella
sottonome = {} ;
Per ( J = 1 , J <= N articoli ( tv ) , J ++,
Inserire ( sottonome , Tabella dati ( io ) << ottenere la variabile della tabella ( tv [ J ] ) )
) ;
Inserire ( sottonome , dt << ottenere nome ) ;
Inverti verso ( sottonome ) ;
Tabella dati ( io ) << salva ( il mio cammino || Oggetti concatenati ( sottonome , "." ) ) ;
) ;
// Termina lo script // chiudi tutto (tabelle dati);
Ri: Sottoinsieme di scriptingGrazie PMroz,
Il problema è che devo conservare i file intermedi e l'esempio che ho fornito è stato inventato, i nomi delle colonne cambierebbero ogni volta.
Grazie,
Eric
Ri: Sottoinsieme di scriptingHo un'applicazione in cui devo creare un sottoinsieme di un set di dati di grandi dimensioni in diversi modi ed eseguire la stessa analisi su ogni sottoinsieme.Piuttosto che creare set di dati separati, utilizzo una combinazione di SELECT ed EXCLUDE per rendere i dati nel set di dati di grandi dimensioni pronti per l'analisi.Per esempio:
dt = Nuova Tavola ( "Esempio colore" ,
Aggiungi righe ( 12 ) ,
Nuova Colonna ( "Colore" , Carattere , Nominale ,
Imposta valori (
{ "rosso" , "rosso" , "rosso" , "rosso" , "blu" , "blu" , "blu" , "blu" , "blu" ,
"verde" , "verde" , "verde" } ) ) ,
Nuova Colonna ( "Intensità" , Carattere , Nominale ,
Imposta valori (
{ "luminoso" , "luminoso" , "buio" , "leggero" , "leggero" , "leggero" , "leggero" , "buio" ,
"buio" , "buio" , "leggero" , "luminoso" } ) ) ) ;
nr = nrow ( dt ) ;
lista_colori = { "rosso" , "blu" , "verde" } ;
lista_intensità = { "luminoso" , "leggero" , "buio" } ;
per ( io = 1 , io <= articoli ( lista_colori ) , io ++,
un_colore = lista_colori [ io ] ;
per ( K = 1 , K <= articoli ( lista_intensità ) , K ++,
one_intensity = lista_intensità [ io ] ;
// Escludi tutte le righe che non corrispondono a questo colore e intensità
dt << seleziona dove ( : Colore == un_colore & : Intensità == one_intensity )
<< invertire la selezione della riga << Escludere ;
nselezionato = numero - nrow ( dt << Ottieni righe selezionate ) ;
dt << deselezionare selezionare ;
Se ( nselezionato > 0 ,
// Fai la tua analisi su dt qui.Verranno utilizzate solo le righe non escluse.
// L'unico comando che ho trovato che ignora le righe escluse è Tables >> Summary
stampa ( "# righe: " || char ( nselezionato ) || " colore: " || un_colore ||
" intensità: " || one_intensity ) ;
) ;
// Pulisci per la prossima selezione
dt << stati di riga chiari ;
) ;
) ;