Ciao Comunità,
Voglio solo imparare come scoprire un numero di colonna in JMP.
Ho provato a utilizzare le informazioni sulla colonna, ma queste informazioni non sono presenti. Posso digitare un numero di colonna in Cols > Selezione colonna > Vai a.. , ma non voglio provare a indovinare.
Perché voglio usare il numero di colonna nel mio script per scorrere su di esso (ad esempio dalla colonna 120 a 130). Ma per questo dovevo scoprire che la mia colonna iniziale (nel mio caso "I_nA_3_m30_NS") si trovava sulla colonna 120..
Grazie per qualsiasi aiuto.
Se vuoi consentire corrispondenze parziali su più colonne, puoi lasciare che "FilterColSelector()" faccia parte del lavoro:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
allCols = dt << getColumnNames("String");
fcs = Filter Col Selector( << nameContains("eight"));
matchingCols = fcs << getItems;
fcs << delete;
matchingColNumbers = [];
for(c=1, c<=NItems(matchingCols), c++, matchingColNumbers = matchingColNumbers||Loc(allCols, matchingCols[c]));
Print(matchingColNumbers);Ciao,
Buona cattura: il metodo che ho suggerito presuppone che tu cerchi l'intero nome della colonna di destinazione che non è valido nel tuo caso in cui cerchi una sottostringa.
Fammici pensare.
Migliore,
TS
La funzione Contains() quando viene utilizzata per confrontare un elenco JMP, restituisce solo corrispondenze esatte.Se devi cercare internamente ogni elemento nell'elenco, dovrai fare qualcosa del tipo:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
cols = dt << get column names( string );
text = "wei";
For( i = 1, i <= N Items( cols ), i++,
tcol = Contains( cols[i], text );
If( tcol > 0,
tcol = i;
Break();
);
);
Show( tcol );
Grazie per la risposta, è una buona idea, ma non ha funzionato per me, il mio tcol era 0.
Ecco la variabile cols (un'altra tabella rispetto alla domanda originale):
{"Tag", "FitA_ 1", "FitA_ 2", "FitA_ 3", "FitA_ 4", "FitA_ 5", "FitA_ 6", "FitA_ 7", "FitA_ 8", "FitA_ 9", "FitA_10", "FitA_11", "FitA_12", "FitB_ 1", "FitB_ 2", "FitB_ 3", "FitB_ 4", "FitB_ 5", "FitB_ 6", "FitB_ 7", "FitB_ 8 ", "FitB_ 9", "FitB_10", "FitB_11", "FitB_12", "F", "H_ 1", "H_ 2", "H_ 3", "H_ 4", "H_ 5", "H_ 6", "H_ 7", "H_ 8", "H_ 9", "H_10", "H_11", "H_12", "V2_ 1", "V2_ 2", "V2_ 3", "V2_ 4", "V2_ 5", "V2_ 6", "V2_ 7", "V2_ 8", "V2_ 9", "V2_10", "V2_11", "V2_12", "V3_ 1", "V3_ 2", "V3_ 3 ", "V3_ 4", "V3_ 5", "V3_ 6", "V3_ 7", "V3_ 8", "V3_ 9", "V3_10", "V3_11", "V3_12", "NAT"}
e ho provato con text = "FitB"
ma tcol era 0
Un modo per avvicinarsi a questo è:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colNumber = Contains( dt << get column names( string ), "height" );
Show( colNumber );
Ciao,
Ecco un metodo per restituire la posizione relativa della prima colonna che corrisponde a un modello di testo (a mia cura "VISITA"):
Names default to here (1);
dt = current data table ();
cols = dt << get column names (string);
text = "VISIT";
tcol = contains (cols, text);
show (tcol);
Facci sapere se funziona per te.
Migliore,
TS