コロンモディファイヤを使用したワードパターンの作成
[OS] ALL
[リリース] ALL
[キーワード] Base, DATA, SUBSET IF, COLON MODIFIER
[質問]
条件文を使用して、文字列中の1文字目に特定の値が入っていた場合にのみ、そのオブザベーションを抽出するという処理を考えています。 [回答]
入力データセットがSASデータセットであれば、WHEREステートメントとLIKE演算子を併用することで、文字列を抽出するためのワードパターンを作成することが可能です。 WHERE string LIKE "B%";
しかし、入力データがブランク区切りやカンマ区切りなどである場合、WHEREステートメントは使用できません。このようなときは、サブセット化IFステートメントでSUBSTR関数、またはKSUBSTR関数を使用する方法が考えられますが、「コロンモディファイヤ」を使用する方がより簡便です。 data test; input kamoku $ hantei $; *if KSUBSTR(hantei,1,1)="不"; /* KSUBSTR関数を使用する場合の記述*/ if hantei = :"不"; /* コロンモディファイヤを使用する場合の記述*/ cards; 英語 合格 国語 合格 数学 合格 理科 不合格 社会 合格 ; run; proc print data=test noobs; run;上記サンプルプログラムの出力結果は、下記のようになります。 kamoku hantei 理科 不合格 |