Unione della configurazione JSL usando "Unisciti"<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho scoperto che posso unire meglio due set di dati usando il comando "Unisci" tabelle di dati, questo elimina al meglio le possibili voci duplicate che potrebbero esistere: la colonna 1 contiene un numero univoco per ciascuna voce.Ho uno script che apre più tabelle di dati e manipola i dati, ma ho problemi a richiamare ciascuna tabella di dati separatamente per far funzionare correttamente lo script "join":
Se lo sto facendo manualmente, il codice è come tale:
Tabella dati ( "Senza titolo 322" ) << Giuntura ( Tabella dati ( "Senza titolo 318" ) ) ,
Unisci colonne con lo stesso nome ,
Per colonne corrispondenti( : REPLICA_ID = : REPLICA_ID ) ,
Rilascia multipli( 1 , 1 ) ,
Nome( "Includi non corrispondenze" )( 1 , 1 ) ,
Mantieni l'ordine del tavolo principale( 1 ) ,
Tabella di output( "unito" )
Il mio problema si presenta quando provo a codificare questo modulo in più tabelle.Le tabelle senza titolo (senza titolo 322, senza titolo 318, ecc. - potrebbero essercene di più a seconda di quanti file apro) sono designate nel mio codice come. Quindi voglio in qualche modo prendere il mio massimoe unisciti a tutti gli altri w.
Ho impostato qualcosa come segue:
Per (f = tabella dati, f >= 1, f--,
Try(v = w << Join( With(Data Table (f)),
*e il resto segue le proprietà della tabella di join sopra elencate*
Tuttavia il mio codice non funziona.Qualcuno ha un'idea di come posso farlo?
Re: Unire la configurazione JSL usando "Unisciti"Mi scuso, credo di non essere stato chiaro:
Capisco che devo mantenere aperte le tabelle che sono state aggiunte all'elenco - se commento Chiudi tutto (tabelle dati, nosave) nel mio codice ottengo
quanto segue nel mio registro (ho un riferimento a una tabella originale che non dovrebbe essere nell'elenco di openDT e che viene trasferita negli OT.Sono sicuro di aver solo bisogno di un fxn vicino per quella tabella e potrei capirlo.Ho specificato in precedenza che l'unione funziona, ma non come voglio che funzioni.

Ma nel mio codice dove ho //invisible (per w = z << Split...), Voglio decommentare l'invisibile, ma poiché l'invisible fxn riconosce solo l'ultima tabella del ciclo e tutti gli altri vengono eliminati, ho bisogno di un modo per fare riferimento a questi e tenerli in un elenco in modo da poterli riferire nel loro insieme. (Chiudi tutto è anche commentato) Come faccio a fare questo?

L'invisibilità è il problema, b/c a meno che non trovi un modo per fare riferimento a ciascuna tabella invisibile, non c'è modo di unire più tabelle. Sembra che dovrò spostare il codice Join nel ciclo, ma non so come incorporarlo se sta scorrendo solo una tabella alla volta e ho bisogno di fare riferimento ad almeno due.
Re: Unire la configurazione JSL usando "Unisciti"L'invisibilità non è il problema qui. Le tabelle invisibili possono essere referenziate e unite ad altre tabelle invisibili o visibili. I tavoli chiusi e quelli invisibili non sono la stessa cosa. I tavoli chiusi sono completamente inutili, sono spariti e dimenticati. Nello script che hai inserito Chiudi tutto ( Tabelle dati , novanta ) ; prima della parte di codice di fusione. Ciò dovrebbe comportare che tutte le tabelle vengano dimenticate e l'unione fallirà. Aspetta di aver finito prima di chiudere i tavoli, invisibili o meno.
Oppure usa il mio approccio sopra, cioè apri una tabella una alla volta, esegui qualsiasi modifica e divisione desideri, quindi uniscili con l'MT corrente prima di chiudere e passare al file successivo.
Re: Unire la configurazione JSL usando "Unisciti"Hmmm, tuttavia, non riesco a unire i file txt originali: sto unendo i file invisibili intermedi creati dalla divisione/formattazione dei file txt originali.Poiché questi file sono invisibili e intermedi, non esiste una directory principale in cui vengono salvati (il motivo per cui sto usando la funzione invisibile: consente di risparmiare spazio e tempo). Ho capito quello che stai dicendo, anche se le mie tabelle sono nell'elenco, sono chiuse quindi non c'è modo di fare riferimento a loro ma "aprirle" non si applica in quanto sono file intermedi/invisibili creati dal file txt che sono non salvata è una directory.
Ecco la ripartizione di quello che sto facendo:
1. Apro il codice dei file txt è simile a quello che hai (avrà nome Data Table ("Risultato1"))
2. Riformulo questi file txt (non sono in formato colonna, quindi ho il codice in cui "dividi", formatto, ecc. In una tabella di dati più leggibile in JMP. - Chiamerò queste tabelle INTERMEDIATE (avranno nome Data Table ("Untitled1"))
3. questi file intermedi sono invisibili (ce ne sono troppi per renderli visibili) - Non li salvo perché non voglio una directory di file intermedi salvati che devo cancellare in seguito.
4. Il mio problema è che sto cercando di unire le tabelle intermedie
Vedo che sarebbe più semplice unire i file originali, ma non sono disponibili in un formato in cui sono in grado di farlo, quindi il mio enigma.
Quindi il codice che ho (e a cui ho fatto riferimento in precedenza) funziona se le mie tabelle intermedie non sono invisibili E non chiudo le tabelle intermedie a cui mi riferisco per unirmi (non funziona esattamente come voglio anch'io, ma comunque funziona) - ma poi ho TUTTI i tavoli aperti, quelli uniti e non uniti
Quindi le vere domande che ho sono:
a) Ho tabelle intermedie - essenzialmente voglio che siano invisibili ma per fare riferimento a loro negli elenchi MT/OT, devo renderle visibili affinché funzioni - essenzialmente voglio che queste siano invisibili però.Quindi la mia vera domanda è: Come faccio a fare riferimento a tabelle intermedie invisibili con un ciclo per riconoscere ogni tabella da utilizzare per ulteriori calcoli (per utilizzare le tabelle di join fxn sembra che debba averlo al di fuori del ciclo For in modo da poter unire due istanze dell'intermedio tavoli)?
Ho allegato lo script.forse questo spiegherà cosa sto cercando di fare.
Re: Unire la configurazione JSL usando "Unisciti"Sembra che tutte le tabelle siano chiuse prima di Join(). L'elenco OT è solo un elenco di riferimenti a datatable. Non sono "oggetti con script" se le tabelle corrispondenti sono scomparse.
Prova qualcosa del genere:
il mio cammino = "/Utenti/.../File/" ; //percorso della directory dei file.txt
scacciare = File nella directory ( il mio cammino ) ; //Elenco di tutti i file
n = N articoli ( scacciare ) ;
// Rimuove i file non di testo da flist
Per ( io = n , io > 0 , io --,
Se ( Contiene ( scacciare [ io ] , ".testo" ) == 0 ,
Rimuovere da ( scacciare , io ) ;
n --;
)
) ;
// Funzione per aprire file di testo (modificare la colonna e importare le impostazioni se necessario)
apri il file = Funzione ( { X } ,
Aprire (
il mio cammino || scacciare [ X ] ,
Importa impostazioni (
Fine della linea ( CRLF , CR , LF ) ,
Fine del campo ( Tab ) ,
Citazioni di striscia ( 1 ) ,
Usa l'apostrofo come virgolette ( 0 ) ,
Scansiona l'intero file ( 1 ) ,
Etichette ( 1 ) ,
I nomi delle colonne iniziano ( 1 ) ,
Inizio dati ( 2 ) ,
Righe da leggere ( Tutto ) ,
Regola dell'anno ( "10-90" )
)
)
) ;
// Apri il primo file
mt = apri il file ( 1 ) ;
//Unisci tutti i file in flist
Per ( io = 2 , io <= n , io ++,
ST = apri il file ( io ) ;
FT = mt ;
mt = FT << Giuntura (
Insieme a ( ST ) ,
Aggiornare ,
Abbinando le colonne ( : Colonna_1 = : Colonna_1 ) ,
Rilascia multipli ( 1 , 0 ) ,
Nome ( "Includi non corrispondenze" )( 1 , 1 ) ,
Mantieni l'ordine del tavolo principale ( 1 ) ,
Tabella di output ( "unito" )
) ;
// Pulire
Chiudere ( ST , nessun salvataggio ) ;
Chiudere ( FT , nessun salvataggio ) ;
) ;
Re: Unire la configurazione JSL usando "Unisciti"Ok, ho provato qualcosa di simile in cui ho inviato le mie tabelle aperte a un elenco:
Prima di questo codice, ho il codice in cui vengono aperti i file *txt (potrei avere fino a 30+ file) e convertiti in una tabella di dati JMP (quindi output di un massimo di 30+ tabelle).Sto quindi cercando di unire tutte queste tabelle in un tavolo tuttavia, alcuni file potrebbero contenere informazioni duplicate che devono essere eliminate: ho scoperto che posso farlo usando la proprietà della tabella Join.Quindi per il codice qui sotto.Ottengo con successo 1 tabella = MT e gli altri sono in una lista = OT.Voglio unirmi a ogni OT dall'elenco e unirmi a MT in modo da ottenere:
MT+OT(1) = MergedTable, quindi MergedTable+OT(2) = MergedTable2, quindi MergedTable2+OT(3) = MergedTable3, ecc. finché non ottengo una tabella principale contenente tutti i dati (e le altre sono chiuse)
openDT = List();
Per (f = 1, f <= N Tabella(), f++,
Inserisci in(open DT, Data Table(f)););
Mostra(openDT);
MT = DataTable(1);
Chiudi(Tabella Dati(1), nosave);
OT = List();
For(g = 1, g<= N Items(openDT) -1, g++,
Inserisci in (OT, DataTable(g));
Chiudi tutto (DataTables, nosave);
Mostra(OT);
Mostra (MT);
For( h = 1, h <= N elementi(OT), h++,
MT << Unisciti(Con(ST),
Aggiornare,
Corrispondendo alle colonne(:Column_1 = :Column_1),
Rilascia multipli(1,0),
Nome("Includi non corrispondenze")(1, 1),
Conserva l'ordine del tavolo principale(1),
Tabella di output ("Unita")););
Continua());
Quando eseguo lo script, tutto funziona correttamente fino al comando Join in cui ottengo il seguente errore
"Send Expects Scriptable Object{169} nell'accesso o nella valutazione di 'Send',"
Per( h = 1 , h <= N articoli ( OT ) , h ++,
MT << /*###*/ Giuntura (
Con (ST),
Aggiornare ,
Per colonne corrispondenti( : Colonna_1 = : Colonna_1 ) ,
Rilascia multipli( 1 , 0 ) ,
Nome( "Includi non corrispondenze" )( 1 , 1 ) ,
Mantieni l'ordine del tavolo principale( 1 ) ,
Tabella di output( "unito" )) /*###*/ ;
Continua();
Aiuto? Sto sbattendo la testa contro il muro cercando di capire perché non funziona
Re: Unire la configurazione JSL usando "Unisciti"Questo potrebbe farti iniziare come esempio. Non è perfetto in quanto dopo l'esecuzione viene chiuso anche l'ultimo dei tavoli aperti ...
Close All(data tables);
New Table("a") << Add Rows(3);
:Column 1 << Set Values([1, 2, 3, 4, 5, 6]);
New Column("Label", Character) << Set Each Value("a");
New Table("b") << Add Rows(3);
:Column 1 << Set Values([1, 2, 3, 7, 8, 9]);
New Column("Label", Character) << Set Each Value("b");
New Table("c") << Add Rows(3);
:Column 1 << Set Values([1, 2, 3, 10, 11, 12]);
New Column("Label", Character) << Set Each Value("c");
New Table("d") << Add Rows(3);
:Column 1 << Set Values([1, 2, 3, 13, 14, 15]);
New Column("Label", Character) << Set Each Value("d");
t_count = N Table();
dt_old = Data Table(t_count);
Show(dt_old << get name());
dt_new = Data Table(1);
For(i = 2, i <= t_count, i++,
dt_old = dt_new;
dt_new = dt_old << Join(
With(Data Table(i)),
Merge Same Name Columns,
By Matching Columns(:Column 1 = :Column 1),
Drop multiples(1, 1),
Name("Include non-matches")(1, 1)
);
Close(dt_old);
);