<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Questa potrebbe essere una domanda davvero semplice, ma dopo molte ricerche e test non riesco a capirlo.Come ottengo il numero di colonna per una determinata colonna se tutto quello che so è il nome della colonna da una finestra di dialogo della colonna?
Codice minimizzato:
dlg = Column Dialog( dlg_firstParam = ColList( "First Parameter"));
primoParam = dlg["dlg_firstParam"][1];
io = 5; // questo è un test case.Supponiamo che selezionerò la quinta colonna nella finestra di dialogo sopra.Se funziona, scriverei un ciclo per i = 1 in ncol() e testerei il nome della colonna ( i ) rispetto al nome del primo parametro... ma non funziona.
mostra(colonna(i)); // restituisce: Colonna("Data");
mostra(primoParam); // restituisce: :Date;
show(nomecolonna(i)); //restituisce: Data;
//Ok, quindi date le due righe precedenti, penso che dovrei essere in grado di eliminare i due punti all'inizio della stringa in :Date; e confronta con Data; come sotto.Sembra quasi che funzionerà...
a = parse(right(expr(firstParam),length(expr(firstParam))));
mostra (a); // Restituisce: Data;
// Ok, quindi i due punti vengono rimossi.
if(nomecolonna(i)==a,b = 1, nomecolonna(i)!=a, b = 0);
mostra (b); // restituisce 0
////////////////////
Il codice sopra è un test per vedere se posso scorrere e verificare se il nome della colonna ( i ) = una funzione di firstParam. Sembra che dovrebbe funzionare, ma non funziona. Qualche idea?
Il metodo preferito sarebbe semplicemente restituire direttamente il numero di colonna.Se puoi aiutarmi in questo, te ne sarei grato.
(Modifica: solo una nota per modificare l'ultima variabile nel tuo codice da colnumber a qualche parola chiave non JMP. colnumber è riservato. Altrimenti funziona bene.)
Grazie per la soluzione! Un piccolo consiglio a quelli là fuori, se il datatable non è attivo sulla linea
colname = Column( "height" ) << getname;
Quindi questa linea non funzionerà. Tuttavia, se specifichi sia il datatable che il nome della colonna:
colname = dt:height << getname;
Funziona perfettamente! Sto solo offrendo alcuni consigli in modo che gli altri non rimangano bloccati come ho fatto io;)
Grazie SM. Solo una nota per cambiare il "colnumber" nell'ultima riga del tuo codice in una parola chiave non JMP. Altrimenti funziona bene.
Il ragazzo con cui lavoro ha suggerito una soluzione simile ottenendo direttamente il numero:
collistare = dt << ottenere i nomi delle colonne ( corda ) ;
firstParam_name = firstParam << ottenere nome ;
ColonnaNumero = contiene ( collistare , firstParam_name ) ;
È possibile utilizzare la funzione Loc() per individuare la posizione di un nome di colonna in un elenco di tutti i nomi di colonna (ordinati come nella tabella dati).
Esempio:
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
collistare = dt << ottenere i nomi delle colonne ( corda ) ;
nomecol = Colonna ( "altezza" ) << getname ;
colnumber = ( Loc ( collistare , nomecol ))[ 1 ] ;