Durchsuchte Spalte nach Werten in der Liste<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo JMP Leute,
Ich benutze oft enthält um eine Spalte nach beliebigen Werten in einer Liste zu durchsuchen. Etwas wie das:
match_list = { "AAA" . "CCC" } ;
single_rows = dt << reihen wo ( enthält ( match_list . : Einzelwert )) ;
Dies ist eine sehr bequeme Möglichkeit, eine Spalte mit einzelnen Werten zu durchsuchen. Oft muss ich jedoch eine ähnliche Suche durchführen, bei der die Spalte mehrere Werte enthält, die durch ein Trennzeichen (normalerweise ein Semikolon) getrennt sind.

Meine Frage: Gibt es eine glatte Methode, um eine Spalte mit begrenzten Werten auf ähnliche Weise wie die oben beschriebene Methode zu durchsuchen? Ich kann reguläre Ausdrücke verwenden, um nach einem einzelnen Wert in der Spalte mit mehreren Werten zu suchen. Ich muss jedoch die mehrwertige Spalte nach vielen Werten durchsuchen, die in einer Liste enthalten sind.
Hier ist ein Code, der die obige Tabelle generiert und die Methode "include" für eine einzelne Wertespalte veranschaulicht.
dt = Neue Tabelle ( "Searchtbl" . Zeilen hinzufügen ( 6 ) .
Neue Spalte ( "Einzelwert" . Charakter . Nominal .
Werte setzen ( { "AAA" . "BBB" . "CCC" . "DDD" . "EEE" . "F F F" } ) ) .
Neue Spalte ( "Begrenzter Wert" . Charakter . Nominal .
Werte setzen ( { "AAA" . "AAA; BBB; CCC; DDD; EEE" . "BBB; CCC; DDD" . "BBB; DDD; EEE; AAA" .
"BBB; EEE" . "FFF; BBB" } )
)
) ;
match_list = { "AAA" . "CCC" } ;
single_rows = dt << reihen wo ( enthält ( match_list . : Einzelwert )) ;
Re: Durchsucht die Spalte mit Trennzeichen nach Werten in der ListeWenn Sie die Nitems nicht haben, denke ich, dass die << get-Zeilen mit where () nach einem Boolean suchen und stattdessen eine Liste erhalten. Wenn es bei den Nitems keine Schnittpunkte gibt, wird nichts in der Liste angezeigt, also falsch.
Re: Durchsucht die Spalte mit Trennzeichen nach Werten in der ListeWow Vince das ist fabelhaft. Ich habe daran gebastelt und mir eine Funktion ausgedacht, die sich in diesem Beitrag von MS stark ausbreitet: Re: Schneller Weg zum Vergleich zweier Listen (ungewöhnliche Elemente)?
Hier ist ein Beispielcode. Es stellt sich heraus, dass Sie das Konstrukt [row ()] nicht benötigen. Aber warum brauchen Sie Nitems?
list_intersect = Funktion ( // sieht, welche Elemente in Liste_1 in Liste_2 enthalten sind
{ list_1 . list_2 } .
{ DEFAULT LOKAL } .
intersect_list = Assoziatives Array ( list_1 ) << sich schneiden ( Assoziatives Array ( list_2 ) ) << Getkeys ;
) ;
list1 = { "Apfel" . "Birne" . "Orange" . "Kiwi" . "Wassermelone" . "Mango" . "Zitrone" . "bosc pear" } ;
list2 = { "Apfel" . "Birne" . "Kiwi" . "Orange" . "Erdbeere" . "Wassermelone" . "Melone" } ;
dt = Neue Tabelle ( "temp" .
Neue Spalte ( "Obst" . Charakter . Setwerte ( list1 || list2 ) )
) ;
list1_rows = dt << Holen Sie sich die Zeilen wo ( Nitems ( list_intersect ( Wörter ( : Obst . ";" ) . list1 ))) ;
list2_rows = dt << Holen Sie sich die Zeilen wo ( Nitems ( list_intersect ( Wörter ( : Obst . ";" ) . list2 ))) ;
Re: Durchsucht die Spalte mit Trennzeichen nach Werten in der ListeIch musste eine Funktion dafür erstellen. aber das scheint zu funktionieren
list_doge = Funktion ( // sieht, welche Elemente in Liste_1 in Liste_2 enthalten sind
{list_1, list_2}, {DEFAULT LOCAL},
aa1 = assoziatives Array (list_1);
aa2 = assoziatives Array (list_2);
aa1 << sich schneiden (aa2);
aa1 << Schlüssel holen ;
);
dt << Holen Sie sich die Zeilen wo ( Nitems (list_doge ( Wörter (: Begrenzter Wert [ Reihe ()], ";" ), match_list)))