Come leggere la tabella nell'elenco?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Diciamo che ho una tabella "dt" in cui i nomi delle colonne non hanno significato.
E ho una tabella "dt_source" con due colonne: una colonna con un nome senza significato e l'altra con un nome significativo corrispondente.
Sto cercando di scrivere uno script che rinomini le colonne da prive di significato a significative.
Le colonne potrebbero essere diverse, quindi creerò una tabella principale "dt_source" con i valori corrispondenti.
Ora ho pronto uno script che prende nomi privi di significato e pendenti da un elenco all'interno dello script e rinomina le colonne per ciascuna coppia se esiste un nome privo di significato.
Voglio essere in grado di prendere quelle coppie corrispondenti non dall'elenco digitato:
nome_in={"col1", "col2"};
name_out={"Età", "Altezza")
ma da un tavolo.
Come leggo dt_name_source in due elenchi: name_in e name_out?
Finora ho questo:
Nomi predefiniti qui ( 1 ) ;
Tentativo ( dt_source = Tabella dati ( "NomeChanging.jmp" ) , Gettare ( "Tentativo di aprire la tabella dati" )) ;
Se ( Non ( È scrivibile ( dt_source ) ) ,
dt_source = Aprire ( "NomeChanging.jmp" ) , dt_source = Tabella dati ( "NomeChanging.jmp" ) ;
) ;
Tabella dati corrente ( dt_source ) ;
nome_in = Elenco () ;
nome_fuori = Elenco () ;
col_nome_in = Colonna ( "nome_in" ) ;
col_nome_out = Colonna ( "nome_out" ) ;
io = 0 ;
Per ogni riga ( nome_in [ io ] = col_nome_in [] ; nome_fuori [ io ] = col_nome_out [] ; io ++ ) ;
Ma poi non gli piace:
Problema di abbonamento{1} nell'accesso o nella valutazione di 'Assign', name_in = /*###*/col_name_in[] /*###*/
Se provo solo una variabile
Per ogni riga ( nome_in = col_nome_in [] ; nome_fuori = col_nome_out [] ) ;
Quindi va bene, ma è solo una variabile che assume valori diversi man mano che il ciclo procede.
E mi serve una lista.
Qualcuno può dare un'idea di come gestire questa situazione?
Grazie!
Ri: Come leggere la tabella nell'elenco?Probabilmente farei le cose in modo leggermente diverso:
Nomi predefiniti qui (1);
// Puntatore alla tabella dati da modificare
dt = data table("Il nome della tabella da modificare");
for(i=1, i<=N elementi(nome_out), i++,
Se(prova(colonna(dt, nome_in ) << ottieni nome, "") != "", colonna( dt, nome_in ) << Imposta nome(nome_out ));
);
Ri: Come leggere la tabella nell'elenco?Jim,
Sembra funzionare bene per ora. Fammi sapere se questo è un modo corretto di fare le cose:
for(i=1, i<=N elementi(nome_out), i++,
mostra(i); If( !Is Missing( È Scriptable( Try( Column( name_in ) ) ) ), col=Colonna(nome_in )< );
mostra(col); mostra(i))
) ;
Ri: Come leggere la tabella nell'elenco?Jim,
Grazie mille per la risposta Funziona perfettamente.
Tuttavia, ho scoperto che il mio codice di ridenominazione non funziona se non sono presenti colonne con uno dei nomi di name_in (e spesso ci saranno colonne nella tabella che non hanno TUTTI i nomi della tabella NameChanging.jmp).
Finora ho questo:
for(i=1, i<=N elementi(nome_out), i++,
mostra(i); Prova(col=Colonna(nome_in )< ), Throw("NESSUNA COLONNA TROVATA");
mostra(col)); mostrare(i)
)
Ma il ciclo si interrompe dopo la prima iterazione quando non trova il primo nome da name_in nella tabella.
Ri: Come leggere la tabella nell'elenco?Credo che il seguente script inserirà i valori negli elenchi necessari:
Nomi predefiniti qui ( 1 ) ;
Se ( Tentativo ( dt_fonte << ottenere il nome, "" ) != "Cambio nome" ,
dt_source = Aprire ( "NomeChanging.jmp" )
) ;
nome_in = dt_source : nome_in << ottenere valori;
nome_fuori = dt_source : nome_fuori << ottenere valori;