2017-09-16 14 views
2

このコードでは、診断コード(ここではDX1、DX2、DX3)を格納する複数のカラムに対して診断範囲(ここでは7567〜75679の範囲)を選択するケースを選択します。 ...等。)。作業に続いて、新しい診断範囲を探しているたびにコードを変更するのは苦痛です。コードをどのように短くするのですか?複数のICDコードを複数の診断カラムと比較するSPSSコードの短縮方法

IF (RANGE(DX1,'7567','75679') | RANGE(DX2,'7567','75679') | RANGE(DX3,'7567','75679') | RANGE(DX4,'7567','75679') | RANGE(DX5,'7567','75679') | RANGE(DX6,'7567','75679') | RANGE(DX7,'7567','75679') |RANGE(DX8,'7567','75679') 
| RANGE(DX9,'7567','75679') | RANGE(DX10,'7567','75679') | RANGE(DX11,'7567','75679') | RANGE(DX12,'7567','75679') | RANGE(DX13,'7567','75679') | RANGE(DX14,'7567','75679') | RANGE(DX15,'7567','75679') 
| RANGE(DX16,'7567','75679') | RANGE(DX17,'7567','75679') | RANGE(DX18,'7567','75679') | RANGE(DX19,'7567','75679') | RANGE(DX20,'7567','75679') | RANGE(DX21,'7567','75679') | RANGE(DX22,'7567','75679') | RANGE(DX23,'7567','75679') 
| RANGE(DX24,'7567','75679') | RANGE(DX25,'7567','75679'))ABDWALDEF=1. 
EXECUTE. 
+0

正確なLiは何ですかあなたが探しているコードのst?それらがすべて文字列の場合、 'range'は期待どおりに動作しないかもしれません。 –

答えて

1
count ABDWALDEF= DX1 to DX25 ('7567' thru'75679'). 
exe. 
if ABDWALDEF>1 ABDWALDEF=1. 
exe. 

個人的に、私は、SPSSの文字列範囲をreccomendないでしょう。文字列の範囲は数値範囲は異なっているので、あなたはただ、あなたが何をしているか知っていることを確認する必要がありますのDXは数字ある場合

  • は、サンプルコード756780を見てみましょう。 756780> 75679であるため、(7567,75679)の範囲に収まりません。

  • DXが文字列である場合、文字列は最初の文字、次に2番目の文字などに基づいてソートされるため、同じ範囲の文字列に収まります。拳4文字は同一で、5位には「9」>「8」があります。したがって、文字列では、"75679"> "756780"です。場合

    :したがって、756780コメントで述べたイーライ-K @として、あなたの範囲の一部

だろう、とあなたはnumerica範囲ではなく、文字列の範囲で仕事をしたい本当に確信していますすべてのコードは、テキスト形式で実際の数である、あなたは同様の番号に変更し 可能性があり、すべてが簡単になります:

alter type DX1 to DXn (f10).

+1

すべてのコードが実際にテキスト形式の数字であれば、数値に変更してすべてが簡単になるかもしれません: 'DX1からDXn(f10)に変更する。 ' –

+1

@ eli-k:しかし、7567はカテゴリコードであり、その後ろには75671〜7567999のサブカテゴリがあります。たぶん各桁の意味が異なり、文字列として並べ替えるのが理にかなっています。これは、OPが彼らが達成しようとしていることを確実にしなければならないと述べた理由です。 –

+1

よろしくお願いします。これが状況であれば、 'if char.substr(DXn、1,4)=" 7567 "...'を使ってカテゴリとそのすべてのサブカテゴリを取得することができます。 (すべてのDXのループに入れてください) –

関連する問題