説明をスキャンする皆さん、こんにちは。
Column、Descriptionをスキャンし、さまざまなテキスト文字列を取得し、存在する場合は「YES」を、存在しない場合は「NO」を返す式を書きたいと思います。 対象となるテキスト文字列は、列Descriptionのデータの一部にすぎません。 私は同じもの、40オンス、40オンスなどのあらゆる形態に興味を持っています。 これらのいずれかが存在する場合は、YESを返します。
私は次の式を書きました、
If(
N Rows/*###*/(Contains(
{"40 oz" ; "40 ounce" ; "40oz" ; "40 Ounce" ; "40 Oz" ;
"40 OZ"},
Empty()
)) > 0,
"Yes",
"NO"
)
ただし、JMPは、上記の説明を見ることができる行でも、すべての行に対してNOを返します。 これに適しているでしょう "LOCATE"を使用する方法はありますか?
ありがとうございます。
説明をスキャンするありがとうございました!
説明をスキャンするありがとうございました。 以前にorコマンドを正しく入力していません。
説明をスキャンする無法
私はあなたのデータテーブルで同じスクリプトを使いました、そしてここに結果があります。

dt = Current Data Table(); // Keep your data table open.
dt << New Column("Test",Character,Continuous,Formula(If( !Is Missing( Regex( Char( :Description ), "oz" ) ) | !Is Missing( Regex( Char( :Description ), "ounce" ) ),:Description,"No Match"))); 説明をスキャンする別の方法:
New Column( "40 oz",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula( N Items( Regex Match( :Description, "40.*[oO]([zZ]|unce)" ) ) > 1 ),
Value Labels( {0 = "No", 1 = "Yes"} ),
Use Value Labels( 1 ),
Set Display Width( 57 )
);説明をスキャンする私は以前のコメントで正しかったと思います。 あなたの式は各 "OR"ステートメントの後に完全な "Contains()"関数を持つ必要があります。 私は私が提案したものを添付しました、そしてそれはあなたが望むものをするように見えます。
説明をスキャンする本当にありがとうございます。
添付ファイルの一部のデータを隠しています。 私の実際のデータセットにはもっと多くの行と長い説明がありますが、これで十分なことがわかります。
説明をスキャンする無法 、
私はあなたの質問を何度も読み、また読み直します、おそらくあなたはこの後です。
これは基本的に以前と同じロジックです。ただし、列式で使用しました。これが役立つかどうか私に知らせてください。
Clear Log(); Clear Globals();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
DesNames = List();
dt << New Column("Test",Character,Continuous,Formula(If( !Is Missing( Regex( Char( :name ), "AL" ) ) | !Is Missing( Regex( Char( :name ), "MA" ) ),:name,"No Match"))); 説明をスキャンする無法 、
サンプルデータセットを投稿していただければ、さらに助かります。一度は利用できないので、JMPのサンプルデータセットを通して私がしていることを説明しましょう。これで問題が解決しない場合は、サンプルデータを共有してください。
Clear Log(); Clear Globals();
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
DesNames = List();
NamesList = dt:name << get Values;
for(i = 1 , i <= N Items(NamesList), i++,
If(!IsMissing(Regex(Char(NamesList[i]),"AL"))|!IsMissing(Regex(Char(NamesList[i]),"MA")),
Insert Into(DesNames,NamesList[i]);
);
);
Show(DesNames);
説明をスキャンするはい、試しましたが、列にデータが返されませんでした。
説明をスキャンする無法 、
dt = Current Data Table();
Col = Column(dt,1); // Replace 1 with the column number of your data table with the data of interest
Vals = Col << Get Values;
DesList = List();
for(i = 1 , i <= N Items(Vals), i++,
If(!IsMissing(Regex(Char(Vals[i]),"oz")) | !IsMissing(Regex(Char(Vals[i]),"ounce")) | !IsMissing(Regex(Char(Vals[i]),"ounce")) | !IsMissing(Regex(Char(Vals[i]),"Oz")),
Insert Into(DesList,Vals[i]);
);
);
Show(DesList); これは、行をスキャンしている場合に対処するためです。 これを試しましたか?
説明をスキャンするうーん、私は説明を拾っていません。 列名をスキャンするためだけに提供したコードです。 既知の列の下の行をスキャンしたい。
説明をスキャンするdt = Current Data Table();
ColNames = dt << Get Column Names("string");
DesList = List();
for(i = 1 , i <= N Items(ColNames ), i++,
If(!IsMissing(Regex(Char(ColNames [i]),"oz")) | !IsMissing(Regex(Char(ColNames [i]),"ounce")) | !IsMissing(Regex(Char(ColNames [i]),"ounce")) | !IsMissing(Regex(Char(ColNames [i]),"Oz")),
Insert Into(DesList,ColNames [i]);
);
);
Show(DesList); Get Column Names機能を使用して列名を抽出し、私が提供したコードを使用できます。
説明をスキャンする私は間違っているかもしれません、しかし、あなたはcontains関数の中にORステートメントを必要としませんか?私が正しいとすれば、ORが存在しないということは、そのエントリの文字列全体を探しているだけで、それらを一度に見つけることができないということです。 しかし、私は間違っているかもしれません。
説明をスキャンするありがとうございます。
私が意味したのは列名です説明 その列の中で、私は興味のあるテキスト文字列(例えば40オンス)を持つ行を選択したいと思います。
説明をスキャンする無法 、
こんにちは、私にこれを打たせてください。私はデータが行にあると仮定しています:
dt = Current Data Table();
Col = Column(dt,1);
Vals = Col << Get Values;
DesList = List();
for(i = 1 , i <= N Items(Vals), i++,
If(!IsMissing(Regex(Char(Vals[i]),"oz")) | !IsMissing(Regex(Char(Vals[i]),"ounce")) | !IsMissing(Regex(Char(Vals[i]),"ounce")) | !IsMissing(Regex(Char(Vals[i]),"Oz")),
Insert Into(DesList,Vals[i]);
);
);
Show(DesList);
これらが列名の場合は、上記のコードで置き換えて代わりに使用できます。
ColNames = dt << Get Column Names("String");
私があなたの質問についてフォローしていないのは、データが "Column Description"にあるということです - あなたはColumn Nameを意味しますか?
これが助けになることを願っています - 他にあなたの親切にあなたの質問を明確にしたりサンプルデータを提供することができます。