Spalten mit einem „Muster“ auswählenHallo
Dies ist eine einfache Aufgabe, aber ich habe nicht sofort eine Möglichkeit gefunden, sie zu erledigen.
Ich habe eine Tabelle mit vielen Spalten (~5000); ich muss eine Teilmenge der Spalten auswählen und dann eine Teilmenge der Tabelle extrahieren.
Der dümmste Weg wäre, jede Spalte aus dem Spaltenselektor auszuwählen.
Eigentlich könnte ich die benötigte Spalte leicht identifizieren, indem ich auf den Spaltennamen ein „Muster“ anwende.
Nehmen wir beispielsweise an, die Spalte lautet wie folgt:
AAA11
AAA12
ABB22
XXX99
CAB32
CAB99
Ich muss die Spalten auswählen, deren Name ein „B“ enthält und mit einer „2“ endet.
Sie können an einem Muster wie „*B*2“ identifiziert werden, wobei „*“ ein Platzhalter ist.
Im Beispiel würde das Muster "ABB22" und "CAB32" auswählen.
Ich habe keinen einfachen Weg gefunden, dies zu tun.
Dank im Voraus
Emmanuel
Datenzusammenführung und -bereinigungBetreff: Spalten mit einem „Muster“ auswählenWenn Sie wirklich reguläre Ausdrücke benötigen und über eine aktuelle Version von JMP verfügen, die FilterEach enthält:
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.*))$" ) ) );
{"Name", "Alter", "Geschlecht"}
Regex macht wie immer mehr Spaß, ihn zu schreiben, als ihn zu lesen. Seien Sie vorsichtig mit mehreren .* in einem einzigen Regex, der möglicherweise nicht übereinstimmt. Es könnten viele erfolglose Alternativen ausprobiert werden.
Betreff: Spalten mit einem „Muster“ auswählenHier ist ein einfaches Skript, um eine Liste mit Spalten zu erstellen, die die Kriterien erfüllen
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 )
)
);