2017-08-09 6 views
3

SPSSにリストまたは値のセットを表示する構文がありますか?私は参照としてリスト/セットを使用する構文を見つけることができませんでした。リストまたは一連の値に基づいて変数を再コード化できるSPSS構文はありますか?

1つの使用例はrecodeです。代わりに、上記のように各値を入力する

DATASET ACTIVATE DataSet1. 
STRING V2 (A8). 
RECODE V1 ('a' = 'group1') ('b' = 'group1') ('c' = 'group1') INTO V2. 
EXECUTE. 

、私はそれが存在する場合は、SQL INのような機能を使用するでしょう。

ロジック:

if V1 IN (a,b,c,e...) then V = "group1"... 

ありがとうございます!ここで

答えて

3

あなたが始めるためにいくつかの可能性との例は次のとおりです。

あなたrecodeコマンドは次のように、よりコンパクトにすることができます

recode V1 ('a' 'b' 'c'='group1') ('d' 'e' 'f'='group2') INTO V2. 

any機能はあなたに論理値を与えます。

if any(V1,'a', 'b', 'c') [do something]. /* can also use DO IF. 

または

compute group1=any(V1,'a', 'b', 'c'). 

あなたは値内の文字列を検索したい場合は、この例では、検索文字列「ABC」が1に分割される(このようchar.indexを使用することができます。たとえば、文字列は、そうV1は、「A」、「B」、別途「C」)をそれぞれ含有するためにテストされます。より複雑なオプションについて

if char.index(V1,'abc',1)>0 V2='group1'. 

をあなたは、CA nループオーバーの値はloopまたはdo repeatです。たとえば、このループでは、V1に 'd'、 'e'または 'f'が含まれる場合、 'a'、 'b'または 'c'を含むV1のすべての値に対して 'grp1' :

do repeat MyStr='a' 'b' 'c' 'd' 'e' 'f'/grp='grp1' 'grp1' 'grp1' 'grp2' 'grp2' 'grp2'. 
    if char.index(V1,Mystr)>0 v2=grp. 
end repeat. 
+0

優秀なany()は、探していたものです!あなたの「やり直し」の例もまた非常に貴重です。 – joshuaf59

+1

非常に大きなリストを持っている場合の別の例は、ルックアップテーブルを使用してから 'MATCH FILES'を使うことです。 –

+0

@AndyWこれは長いリストには絶対に正しい - あなたが完全な数学を探しているとき。含まれている文字列を検索するときにも使えるかもしれませんが、それはより複雑になります(私はマッチングではなく、 'write out'と' include'を使って構文を作ります)。 –

関連する問題