2017-12-06 20 views
1

私は2つのSASデータセットを持っています。最初のデータセットには会社の説明変数(都市を含むこともありますが、時にはそうではありません)があり、2番目のデータセットには変数があり、すべての都市がリストされています。最初のデータセットに変数を作成する必要があります。つまり、2番目のデータセットの都市が見つかったかどうか、結果には0または1つの回答のみが含まれていてはならないということです。 INDEXW(または同様の)関数をループすることなく簡単に実行できますか?SASで複数の文字列を検索する

答えて

3

indexwの何か問題がありますか? proc sqlindexwを使用すると、かなり簡単な解決策が得られます。

サンプルデータ:

data have_messy; 
    length messy $100; 
    messy = 'this is a city name: brisbane' ; output; 
    messy = 'this is a city name: sydney' ; output; 
    messy = 'this is a city name: melbourne'; output; 
run; 

data have_city; 
    length city $20; 
    city = 'sydney' ; output; 
    city = 'brisbane'; output; 
run; 

例クエリ:

proc sql noprint; 
    create table want as 
    select a.*, 
     b.city 
    from have_messy a 
    left join have_city b on indexw(a.messy, b.city) 
    ; 
quit; 

結果:

messy        city 
===============================  ========= 
this is a city name: sydney   sydney 
this is a city name: brisbane  brisbane 
this is a city name: melbourne 

は注意してください - 複数の場合は、上記のクエリは、テーブルAの行ごとに複数の結果を返すことができます都市名が見つかりました。私はあなたの要件に応じて重複した行を処理するためのフォローアップステップを実行することをお勧めします。

+0

何も間違っていません!ちょうど私が参加するには、その機能を使用することができないことを知っている...多くの今日学んだ。ありがとう! – VR6

関連する問題