公開日: 09/19/2023

Match関数

Match()関数を使うと、比較対象となる値をすべて手で入力しなくても、等しいかどうかの比較を繰り返すことができます。構文は次のとおりです。

Match( x, value1, result1, value2, result2, ..., resultElse );

たとえば次のスクリプトは、「Big Class.jmp」の性別の略称をコード変更します。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For Each Row( 性別 =
	Match(
		性別,
		"F", "女性",
		"M", "男性",
		"不明");
	);

このスクリプトは次のように機能します。

For Each Row( 性別 =

テーブルの各行で「性別」の列の値を変更するよう指定する。

Match(

Match()ループを開始する。

性別,

「性別」をMatchの引数に指定する。

"F", "女性",

値が「F」であれば、「女性」に置き換える。

"M", "男性",

値が「M」であれば、「男性」に置き換える。

"不明" );

FとMのどちらでもない場合は、「不明」に置き換える。

);

ループを終了する。

このMatch()の例は、If関数の例を単純にしたものです。Match()の利点は、比較の変数を条件式ごとに繰り返す必要がなく、一度定義するだけでよいことです。欠点は、Ifとは異なり、演算子のある式が使えないことです。Match()式で性別 == "F"という引数を使うと、エラーになります。

条件と結果のグループが多いほど、Match()が本領を発揮します。次のようなスクリプトにIf()を使ったとすると、もっと多くの行が必要になります。

dt = Open( "$SAMPLE_DATA/Travel Costs.jmp" );
For Each Row(
	予約した曜日 = Match( 予約した曜日,
		"Sunday", "SUN",
		"Monday", "MON",
		"Tuesday", "TUE",
		"Wednesday", "WED",
		"Thursday", "THU",
		"Friday", "FRI",
		"Saturday", "SAT",
		"Not Specified"
	)
);

条件と結果のデータタイプに気をつけてください。前述の例では、条件も結果も文字データです。データタイプが一致しないと、列のデータタイプが自動的に変更されてしまうため、期待したような結果にならないことがあります。

メモ: Match()関数は比較の値xが欠測値であるか、value1の値が欠測値であるかを明示的にチェックします。もし両方とも欠測値であればresult1の値を戻します。そうでなければ欠測値を無視して、式xvalueN/resultNvalueNとの比較を続けます。もし式xvalueN値のいずれかと等しい場合は、対応するresultN値を戻します。もし等しいvalueN値が見つからなければ、resultElse値を戻します。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).