memorizzazione di tabelle di dati da open () in una listaCiao,
Vorrei usare la parola chiave open () per aprire più fogli di lavoro e archiviare questi dati in una lista.
Tables = {};
//normaly I would like to use a for loop here, however the number of worksheets will vary.
Tables = Open ("pathway",
invisible, info about the data..);
//do something with the tables
for (i = 1, i <= NITEMS(Tables), i++,
close(Tables[i], nosave);
);
Domanda aggiuntiva:
È anche possibile utilizzare un motore di ricerca / libreria protetto da username / password per cercare e scaricare informazioni su jmp?
Cordiali saluti
Anders
Ri: memorizzazione di tabelle di dati da open () in una listaCiao,
sì la mia lista sembra così.
Ho risolto il problema implementando un ciclo while (file = tabelle). Quando ho avuto due cicli che fanno riferimento alla stessa lista, JMP non è riuscito a trovare i miei riferimenti. Per me sembra che le Tabelle siano dichiarate al di fuori del tuo ciclo dicendo che Tabelle = ripeti (....), tuttavia, anche se dichiaro le Tabelle = {} al di fuori del tuo ciclo, non potrei ancora riferirmi al mio secondo ciclo per . Conosci la ragione di questo?
f = N Items (flist)
Mentre ( f > 0 ,
io = 1 ;
dt = Aperto (
il mio cammino || flist [ f ] ,
Importa impostazioni (
Fine della linea ( CRLF , CR , LF ) ,
Fine del campo ( Altro ( ";" ) , CSV ( 0 ) ) ,
Quotes Strip ( 1 ) ,
Usa Apostrofo come Virgolette ( 0 ) ,
Scansione intero file ( 1 ) ,
Tratta le colonne vuote come numeriche ( 0 ) ,
CompressNumericColumns ( 0 ) ,
CompressCharacterColumns ( 0 ) ,
CompressAllowListCheck ( 0 ) ,
etichette ( 1 ) ,
Inizio di nomi di colonna ( 1 ) ,
Data inizia ( 2 ) ,
Linee da leggere ( "Tutti" ) ,
Regola annuale ( "20xx" )
) ,
) ;
file [ io ] = dt ;
io = io + 1 ;
F--;
....
);
Ri: memorizzazione di tabelle di dati da open () in una listaHo provato il mio codice con i file .csv e funziona (JMP 12.2 per Mac). Funziona anche con file invisibili.
Il tabelle la lista dovrebbe assomigliare a questa:
Mostrare ( tabelle )
/ *:
Tabelle = {DataTable ("Data 1"), DataTable ("Data 2"), DataTable ("Data 3")};
Assicurarsi che csv si apra correttamente come una tabella dati in JMP (disattivare temporaneamente invisibile ) e che la tabella non è stata chiusa in un'operazione precedente.
Ri: memorizzazione di tabelle di dati da open () in una listaCiao,
Ho cercato di incorporare questo codice in altre sezioni del mio script, tuttavia non riesco a ottenere dt = Tabelle [i] o dt = Tabella dati (tabelle [i]) per fare riferimento alle mie tabelle in Tabelle. Vedi sotto per esempi:
// Ho usato il tuo codice per aprire tutti i file in una directory designata, mentre eseguo il debug posso vedere che le tabelle contengono un riferimento ai miei file CSV, quindi questa parte sembra funzionare
for (i = 1, i <= N ITEMS (tabelle), i ++,
dt = Tabella dati ( tabelle [ io ] ) ; // JMP non può individuare il riferimento per alcuna tabella nelle tabelle. dt = Tabelle [i] non funziona neanche.
dt << Nuova colonna ( "Segnale" ) ;
dt << Sposta colonne selezionate ( { "Segnale" } , Per prima cosa ) ;
: Segnale << tipo di dati ( Personaggio ) ;
col = Colonna ( 1 ) ;
dt << Nuova colonna ( "Tabella delle fonti" , Personaggio ) ;
: Tabella delle fonti << Imposta ciascun valore ( dt << Ottieni il nome () ) ;
dt << Sposta colonne selezionate ( { "Tabella delle fonti" } , Per prima cosa ) ;
Ri: memorizzazione di tabelle di dati da open () in una listaGrazie per la tua risposta veloce. È un codice molto elegante e ha risolto il mio problema perfettamente grazie.Ri: memorizzazione di tabelle di dati da open () in una listaPenso che qui verrà richiesto un ciclo per costruire la lista. Il File nella directory () la funzione è utile se il numero di file varia e sono tutti trovati nella stessa directory.
Un esempio:
// Define path and file type
mypath = "path";
ftype = ".jmp";
// Make list of files, remove all non-matching files
flist = Files In Directory(mypath);
For(i = N Items(flist), i > 0, i--,
If(!Ends With(flist[i], ftype),
Remove From(flist, i)
)
);
// Open and create list of tables
Tables = Repeat(
i = 0;
{i++ ; Open(mypath || flist[i])};,
N Items(flist)
);
//do something with the tables
For(i = 1, i <= N Items(Tables), i++,
Close(Tables[i], No Save)
);