Cerchi il numero della colonna?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Mi serve il numero della colonna.Ho il nome della colonna, ma potrebbe non essere sempre nello stesso spazio.
Per prima cosa ho deciso di utilizzare un ciclo While che interrompe l'iterazione quando viene trovata la colonna."n" sarebbe il numero di colonna, ma non funziona.
colFound = 0 ;
N = 0 ;
Mentre ( colFound == 0 ,
N ++;
colNome = Nome della colonna ( N ) ;
Se ( colNome == Vd , colFound = 1 , ) ;
) ;
Ottengo questo errore: argomento non valido nell'accesso o nella valutazione di 'Nome colonna', Nome colonna/*###*/(n)
Tuttavia, se lo utilizzo (questa volta conosco il numero effettivo) restituisce il nome della colonna che sto cercando:
col = Nome colonna(38);
mostra(col);
Da un post ( numero di colonna ), ho usato il suggerimento di msharp, ma ancora non ho avuto fortuna nell'ottenere il numero della colonna, restituisce solo il nome della colonna?
Ri: Cerchi il numero di colonna?Grazie msharp, lo terrò a mente.È molto più pulito!
Ri: Cerchi il numero di colonna?Proprio come regola pratica.Direi che se il tuo codice o la tua tabella sono impostati in modo tale da dipendere dall'ordine delle colonne, probabilmente stai facendo qualcosa di brutto.Potrebbe funzionare, ma probabilmente esiste un modo più elegante e veloce per farlo.
L'ordine dei dati dovrebbe essere considerato solo alla fine di uno script quando si sceglie di visualizzare i dati (e nella maggior parte dei casi non è nemmeno necessario poiché di solito è meglio mostrare i dati in un grafico e non in una tabella).
Detto questo, il codice brutto che funziona è pur sempre un buon codice.Nel tuo caso, supponendo che tu non abbia alcun controllo su come le tabelle di dati vengono inserite nel tuo script, questa potrebbe essere la soluzione più semplice.Tuttavia, potresti comunque condensare il codice in questo modo: (Nota come non ho mai bisogno di conoscere il numero di colonna).
colFound = 0 ;
ncols = ncol ( dtSummary ) ;
per ( io = 1 , io <= ncols , io ++,
Se ( colFound ,
Se ( dispositivoPass ,
dispositivoPass --;
Inserire ( y_cols , io , io ) ;
,
rottura ()
)
) ;
colNome = ( Nome della colonna ( io ) << ottenere il nome ) ;
Se ( colNome == "Vd" , colFound = 1 ) ;
) ;
Ri: Cerchi il numero di colonna?Se so che ci sarà sempre una colonna denominata "Vd" nei miei dati ma potrebbe trovarsi ogni volta in una posizione diversa, perché non dovrei utilizzare il numero di colonna?Dopo la colonna Vd, ci sarà un numero "x" di colonne che devo inserire in un elenco.Poiché il numero di colonne è sconosciuto finché non avrò eseguito lo script e i nomi di queste colonne verranno determinati in base al risultato dei miei dati, non vedo perché utilizzare il numero di colonna sia orrendo.Suppongo che mentre vengono create quelle colonne potrei inserirle in un elenco, ma per favore spiega perché ottenere il numero di colonna è orrendo?
colFound = 0 ;
N = 0 ;
ncols = ncol ( dtSummary ) ;
per ( io = 1 , io <= ncols , io ++,
colNome = ( Nome della colonna ( io ) << ottenere il nome ) ;
Se ( colNome == "Vd" , colFound = 1 ; rottura () , ) ;
) ;
iCol = 1 ;
//iCol = Contiene(dtSummary << ottieni i nomi delle colonne, Colonna("Vd"));
Se ( colFound == 1 ,
y_cols = {} ;
per ( N = iCol + 1 , N <= ( iCol + dispositivoPass ) , N ++,
y_cols = Inserire ( y_cols , N , N ) ;
) ,);
Ri: Cerchi il numero di colonna?Penso che tu non abbia capito il mio suggerimento.Il mio suggerimento è che NON dovresti trovare un numero di colonna.È una pratica di codifica scadente, in effetti è orrenda.
Ri: Cerchi il numero di colonna?Grazie, felice che tu abbia postato!Ho funzionato.Ora capisco qualcosa in più da entrambi i tuoi post
Ri: Cerchi il numero di colonna?Sembra che Peter mi abbia preceduto nel rispondere, ma ecco un altro metodo senza cicli, quindi dovrebbe essere più veloce per un numero elevato di colonne.
dt = Aprire ( "$dati_campione\Analgesici.jmp" );
numero_colonna = Contiene (dt << ottenere i nomi delle colonne , Colonna ( "farmaco" ));
Sostituisci semplicemente "drug" con il nome della colonna che stai cercando per ottenere il numero di colonna associato.
giuliano
Ri: Cerchi il numero di colonna?Oh grazie per averlo capito!
Il mio codice funziona bene, grazie ancora.
Ri: Cerchi il numero di colonna?Per qualche motivo il ciclo while non funzionava correttamente se il nome della colonna non veniva trovato.Questo è un po' più pulito:
dt = Aprire ( "$dati_campione\Big Class.jmp" ) ;
Tabella dati corrente ( dt ) ;
vd = "altezza" ;
colFound = 0 ;
N = 0 ;
ncols = ncol ( dt ) ;
per ( io = 1 , io <= ncols , io ++,
colNome = ( Nome della colonna ( io ) << ottenere il nome ) ;
Se ( colNome == Vd ,
colFound = 1 ;
rottura () ;
) ;
) ;
Ri: Cerchi il numero di colonna?il nome della colonna è fuorviante: restituisce la colonna, ad esempio :height e non "height".Inoltre non controlli mai se n supera il numero di colonne nella tabella.Questo codice funzionerà:
dt = Aprire ( "$dati_campione\Big Class.jmp" ) ;
Tabella dati corrente ( dt ) ;
vd = "altezza" ;
colFound = 0 ;
N = 0 ;
ncols = ncol ( dt ) ;
Mentre ( ! colFound & N <= ncols ,
N ++;
colNome = ( Nome della colonna ( N ) << ottenere il nome ) ;
Se ( colNome == Vd ,
colFound = 1
) ;
) ;