Seleziona le colonne con un "modello"Ciao
Questo è un compito semplice ma non ho trovato un modo immediato per farlo.
Ho una tabella con molte colonne (~5000); Devo selezionare un sottoinsieme di colonne e quindi estrarre una tabella del sottoinsieme.
Il modo più stupido per farlo sarebbe selezionare ciascuna colonna dal selettore di colonna.
In realtà, potrei facilmente identificare la colonna di cui ho bisogno applicando al nome della colonna un "modello"
Ad esempio, supponiamo che la colonna sia la seguente:
AAA11
AAA12
ABB22
XXX99
CAB32
CAB99
Devo selezionare le colonne il cui nome include una "B" e termina con un "2"
Potrebbero essere identificati da un modello come "*B*2" , dove "*" è un carattere jolly.
Nell'esempio, il pattern selezionerebbe "ABB22" e "CAB32"
Non ho trovato un modo semplice per farlo.
grazie in anticipo
Emanuele
Combinazione e pulizia dei datiRe: Seleziona colonne con un "modello"Se hai davvero bisogno di regex e hai una versione recente di JMP che include FilterEach:
dt = Open( "$sample_data/big class.jmp" );
colList = dt << get column names( string );
// (>?.*?) is an atomic match for a reluctant (not greedy) match of 0 or more characters
// atomic is important when the match might fail to keep if from slowing down a lot on long names
Filter Each( {name}, colList, !Is Missing( Regex( name, "^((.e.)|((>?.*?)a(>?.*?)e.*))$" ) ) );
{"nome", "età", "sesso"}
Regex, come sempre, è più divertente da scrivere che da leggere. Fai attenzione a più .* in una singola regex che potrebbero non corrispondere...potrebbe provare un sacco di alternative infruttuose.
Ri: Selezionare le colonne con un "modello"Ecco un semplice script per creare un elenco di colonne che soddisfino i criteri
Names Default To Here( 1 );
dt = Current Data Table();
colList = dt << get column names( string );
For( i = N Items( colList ), i >= 1, i--,
If( !(Contains( colList[i], "B" ) & Right( colList[i], 1 ) == "2"),
Remove From( colList, i, 1 )
)
);