リスト内の値の区切り文字列を検索<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMPの皆さん、こんにちは。
よく使う含むリスト内の値について列を検索します。 このようなもの:
match_list = { 「AAA」 、 「CCC」 } ;
single_rows = dt << 行を取得する ( 含む ( match_list 、 : 単一値 )) ;
これは、単一の値を含む列を検索するのに非常に便利な方法です。 ただし、列に区切り文字(通常はセミコロン)で区切られた複数の値が含まれている場合は、同様の検索を何度も行う必要があります。

私の質問:上で概説した方法に似た方法で区切られた値の列を検索するためのなめらかな方法はありますか?私は正規表現を使用して、複数値列の単一の値を検索することができます。 しかし、リストに含まれている多くの値について複数値列を検索する必要があります。
上記の表を生成し、単一値列のcontainsメソッドを示すコードを次に示します。
dt = 新しいテーブル ( "Searchtbl" 、行を追加 ( 6 ) 、
新しいコラム ( 「単一値」 、キャラクター 、公称 、
設定値 ( { 「AAA」 、 "BBB" 、 「CCC」 、 "DDD" 、 「EEE」 、 "FFF" } ) ) 、
新しいコラム ( 「区切り値」 、キャラクター 、公称 、
設定値 ( { 「AAA」 、 "AAA; BBB; CCC; DDD; EEE" 、 "BBB; CCC; DDD" 、 "BBB; DDD; EEE; AAA" 、
"BBB; EEE" 、 "FFF、BBB" } )
)
) ;
match_list = { 「AAA」 、 「CCC」 } ;
single_rows = dt << 行を取得する ( 含む ( match_list 、 : 単一値 )) ;
再:リスト内の値を区切ったカラムを検索するもしあなたがそのニーテムを持っていなければ、<< get rows where()がブール値を探して代わりにリストを得るだろうと私は思います。 nitemでは、交差点がなければリストには何もないので偽です。
再:リスト内の値を区切ったカラムを検索するうわVinceそれは素晴らしいです。 私はそれをいじって、MSによるこの記事から大いに借りる機能を思い付きました: 再:2つのリスト(珍しい要素)を比較する簡単な方法は?
これがサンプルコードです。 [row()]構文は必要ないことがわかりました。 しかし、なぜあなたはnitemを必要としますか?
list_intersect = 関数 ( // list_1のどの項目がlist_2にあるのかを調べます
{ list_1 、 list_2 } 、
{ デフォルトの地域 } 、
intersect_list = 連想配列 ( list_1 ) << 交差する ( 連想配列 ( list_2 ) ) << ゲツキ ;
) ;
list1 = { "林檎" 、 "梨" 、 "オレンジ" 、 "キウイ" 、 "スイカ" 、 "マンゴー" 、 "レモン" 、 「ボスク梨」 } ;
list2 = { "林檎" 、 "梨" 、 "キウイ" 、 "オレンジ" 、 "イチゴ" 、 "スイカ" 、 "メロン" } ;
dt = 新しいテーブル ( 「温度」 、
新しいコラム ( "フルーツ" 、キャラクター 、 setvalues ( list1 || list2 ) )
) ;
list1_rows = dt << 行を取得する ( ナイテム ( list_intersect ( ことば ( : フルーツ 、 「;」 ) 、 list1 ))) ;
list2_rows = dt << 行を取得する ( ナイテム ( list_intersect ( ことば ( : フルーツ 、 「;」 ) 、 list2 ))) ;
再:リスト内の値を区切ったカラムを検索するそれを実行するための関数を作成しなければなりませんでした。しかしこれはうまくいくようです
list_doge = 関数 ( // list_1のどの項目がlist_2にあるのかを調べます
{list_1、list_2}、{DEFAULT LOCAL}、
aa1 = 連想配列 (list_1);
aa2 = 連想配列 (list_2);
aa1 << 交差する (aa2);
aa1 << キーを入手 ;
;
dt << 行を取得する ( ナイテム (list_doge( ことば (:区切り値[ 行 ()]、 「;」 )、match_list)))