Unione della configurazione JSL utilizzando "Unisci"<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho scoperto che posso unire meglio due set di dati utilizzando il comando "Unisci" delle 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 eseguo manualmente, il codice è tale:
Tabella dati ( "Senza titolo 322" ) << Giuntura ( Tabella dati ( "Senza titolo 318" ) ) ,
Unisci colonne con lo stesso nome ,
Per colonne corrispondenti ( : REPLICATE_ID = : REPLICATE_ID ) ,
Rilascia multipli ( 1 , 1 ) ,
Nome( "Includi non corrispondenze" )( 1 , 1 ) ,
Conserva l'ordine della tabella principale( 1 ) ,
Tabella di output( "Unito" )
Il mio problema si presenta quando provo a codificare questo modulo su più tabelle.Le tabelle senza titolo (senza titolo 322, senza titolo 318, ecc. - potrebbero essercene di più a seconda del numero di file che apro) sono designate nel mio codice come. Quindi voglio in qualche modo prendere il mio massimoe unisciti ad ogni altro w.
Ho impostato qualcosa come segue:
Per (f = Tabella dati, f >= 1, f--,
Prova(v = w << Partecipa( Con(Tabella dati (f)),
*e il resto segue le proprietà della tabella di join elencate sopra*
Tuttavia il mio codice non funziona.Qualcuno ha un'idea di come posso farlo?
Ri: Unione della configurazione JSL utilizzando "Unisci"Mi scuso, forse non sono stato chiaro:
Capisco che devo mantenere aperte le tabelle 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 openDT e che viene trasferita negli OT.Sono sicuro che mi serve solo un incontro ravvicinato per quel tavolo 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 rimuovere il commento dall'invisibile, ma poiché l'invisibile fxn riconosce solo l'ultima tabella del ciclo e tutte le altre vengono cancellate, ho bisogno di un modo per fare riferimento a questi e mantenerli 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 è possibile unire più tabelle. Sembra che dovrò spostare il codice Join nel ciclo, ma non so come incorporarlo se esegue il loop solo su una tabella alla volta e devo fare riferimento ad almeno due.
Ri: Unione della configurazione JSL utilizzando "Unisci"L’invisibilità non è il problema qui. È possibile fare riferimento alle tabelle invisibili e unirle ad altre tabelle invisibili o visibili. Tavoli chiusi e invisibili non sono la stessa cosa. I tavoli chiusi sono completamente inutili, sono spariti e dimenticati. Nello script che hai inserito Chiudi tutto ( Tabelle di dati , nosalva ) ; prima della parte di codice di unione. 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, ovvero apri una tabella una alla volta, esegui qualsiasi modifica e divisione desideri, quindi uniscile con l'attuale MT prima di chiudere e passare al file successivo.
Ri: Unione della configurazione JSL utilizzando "Unisci"Hmmm, però 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 root in cui vengono salvati (il motivo per cui sto utilizzando la funzione invisibile: consente di risparmiare spazio e tempo). Capisco quello che stai dicendo, anche se le mie tabelle sono nell'elenco, sono chiuse quindi non c'è modo di farvi riferimento ma "aprirle" non si applica poiché sono file intermedi/invisibili creati dal file txt che sono non salvata è una directory qualsiasi.
Ecco il dettaglio di ciò che sto facendo:
1. Apro il codice del file txt è simile a quello che hai (avrà il nome Data Table ("Risultato1"))
2. Riformatto questi file txt (non sono in formato colonna, quindi ho del codice in cui "divido", formato, ecc.) in una tabella dati più leggibile in JMP. - Chiamerò queste tabelle INTERMEDIE (avranno il 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 eliminare in seguito.
4. Il mio problema è che sto cercando di unire le tabelle intermedie
Vedo che sarebbe più semplice unire semplicemente i file originali, ma non arrivano in un formato in cui posso 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 faccio riferimento per unirmi (non funziona esattamente come voglio, ma funziona comunque) - ma poi ho TUTTI i tavoli aperti: uniti e non uniti
Quindi le vere domande che ho sono:
a) Ho delle tabelle intermedie - essenzialmente voglio che siano invisibili ma per farvi riferimento negli elenchi MT/OT, devo renderle visibili affinché funzioni - essenzialmente però le voglio invisibili.Quindi la mia vera domanda è: Come faccio a fare riferimento a tabelle intermedie invisibili con un ciclo per riconoscere ciascuna tabella da utilizzare per ulteriori calcoli (per utilizzare le tabelle di unione fxn sembra che debba averlo all'esterno del ciclo For in modo da poter unire due istanze dell'intermedio tabelle)?
Ho allegato la sceneggiatura.forse questo spiegherà cosa sto cercando di fare.
Ri: Unione della configurazione JSL utilizzando "Unisci"Sembra che tutte le tabelle siano chiuse prima del Join(). L'elenco OT è solo un elenco di riferimenti datatable. Non sono "oggetti scriptabili" se le tabelle corrispondenti sono scomparse.
Prova qualcosa del genere:
il mio cammino = "/Utenti/.../File/" ; //percorso della directory dei file.txt
Fist = File nella directory ( il mio cammino ) ; //Elenco di tutti i file
N = N articoli ( Fist ) ;
// Rimuove i file non di testo da flist
Per ( io = N , io > 0 , io --,
Se ( Contiene ( Fist [ io ] , ".TXT" ) == 0 ,
Rimuovere da ( Fist , io ) ;
N --;
)
) ;
// Funzione per file di testo aperti (modifica colonna e importa impostazioni se necessario)
apri il file = Funzione ( { X } ,
Aprire (
il mio cammino || Fist [ X ] ,
Importa impostazioni (
Fine della linea ( CRLF , CR , LF ) ,
Fine del campo ( Tab ) ,
Citazioni sulla striscia ( 1 ) ,
Usa l'apostrofo come virgoletta ( 0 ) ,
Scansiona l'intero file ( 1 ) ,
Etichette ( 1 ) ,
Inizio dei nomi delle colonne ( 1 ) ,
Inizio dati ( 2 ) ,
Righe da leggere ( Tutto ) ,
Regola dell'anno ( "10-90" )
)
)
) ;
// Apre 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 (
Con ( ST ) ,
Aggiornamento ,
Corrispondendo alle colonne ( : Colonna_1 = : Colonna_1 ) ,
Rilascia multipli ( 1 , 0 ) ,
Nome ( "Includi non corrispondenze" )( 1 , 1 ) ,
Preserva l'ordine della tabella principale ( 1 ) ,
Tabella di uscita ( "Unito" )
) ;
// Ripulire
Vicino ( ST , nessun salvataggio ) ;
Vicino ( FT , nessun salvataggio ) ;
) ;
Ri: Unione della configurazione JSL utilizzando "Unisci"Ok, ho provato qualcosa di simile in cui ho inviato le mie tabelle aperte a un elenco:
Prima di questo codice, ho un codice in cui i file *txt vengono aperti (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 utilizzando la proprietà Unisci tabella.Quindi secondo il codice seguente.Ottengo con successo 1 tabella = MT e le altre sono in una lista = OT.Voglio unirmi a ciascun OT dall'elenco e unirlo 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 = Lista();
Per (f = 1, f <= N Tabella(), f++,
Inserisci in (apri DT, tabella dati (f)););
Mostra(apriDT);
MT = TabellaDati(1);
Chiudi(Tabella dati(1), nosave);
OT = Lista();
For(g = 1, g<= N Elementi(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 << Unisci(Con(ST),
Aggiornamento,
Corrispondendo alle colonne (:Colonna_1 = :Colonna_1),
Rilascia multipli (1,0),
Nome("Includi non corrispondenze")(1, 1),
Conserva l'ordine della tabella principale(1),
Tabella di output ("Unita")););
Continua());
Quando eseguo lo script, tutto funziona correttamente fino al comando Join in cui ottengo il seguente errore
"L'invio prevede un oggetto scriptabile{169} nell'accesso o nella valutazione di 'Invia',"
Per( H = 1 , H <= N articoli ( OT ) , H ++,
MT<< /*###*/ Giuntura (
Con(ST),
Aggiornamento ,
Per colonne corrispondenti ( : Colonna_1 = : Colonna_1 ) ,
Rilascia multipli ( 1 , 0 ) ,
Nome( "Includi non corrispondenze" )( 1 , 1 ) ,
Conserva l'ordine della tabella principale( 1 ) ,
Tabella di output( "Unito" )) /*###*/ ;
Continua();
Aiuto? Sto sbattendo la testa contro il muro cercando di capire perché non funziona
Ri: Unione della configurazione JSL utilizzando "Unisci"Questo potrebbe iniziare come esempio. Non è perfetto perché 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);
);