2016-10-19 7 views
2

紛らわしいタイトルについてお詫び申し上げます。基本的に、SPSSで目的の機能には、次のデータファイルで作業している:別の変数と等しい値を持つSPSSでの新しい変数の作成

Monday  Tuesday  Wednesday  Day of Interest Temperature on Day of interest 
72   78   80   2      

は、ここでは、次の3つの変数とそれらの日のそれぞれの温度を有します。目標は、新しい変数を作成することです(たとえば、関心のある日の気温)。これは、対応する日と同じ値です(たとえば、2番目の曜日は月曜日なので、月曜日の気温を新しい変数の列)。だから、データファイルを作る必要がある構文の結果は読み:

Monday  Tuesday  Wednesday  Day of Interest Temperature on Day of interest 
72   78   80   2     72 

私の考えは、私はIfステートメントを使用することができるということですが、私は構文はSPSSになります正確にどのようにわかりません。ここに私が書いたものがあります:

IF (Day of Interest = 2) Temperature on Day of Interest = $Monday. 
IF (Day of Interest = 3) Temperature on Day of Interest = $Tuesday. 

このようにして、さまざまな変数の値を正しく参照する方法を知っている人はいますか?私はこれがはっきりしていることを願って、私はどんな質問にも答えることができるでしょう!示すために、いくつかの偽のデータを作成する

答えて

1

data list list/Sunday Monday Tuesday Wednesday Thursday Friday Saturday Day_of_Interest . 
begin data 
41 42 43 44 45 46 47 2 
51 52 53 54 55 56 57 6 
61 62 63 64 65 66 67 4 
71 72 73 74 75 76 77 7 
81 82 83 84 85 86 87 1 
end data. 

は、今ではこのようなIFの別々のステートメントで動作するように、もちろん可能である:

IF (Day_of_Interest = 2) Temperature_on_Day_of_interest = Monday. 
IF (Day_of_Interest = 3) Temperature_on_Day_of_interest = Tuesday. 
IF (Day_of_Interest = 4) Temperature_on_Day_of_interest = Wednesday. 
EXECUTE. 

しかし、その代わりに7のための7つの文を作成しますこの方法でループを使用することができます:

do repeat Dname=Sunday Monday Tuesday Wednesday Thursday Friday Saturday/Dval=1 2 3 4 5 6 7. 
IF (Day_of_Interest = Dval) Temperature_on_Day_of_interest = Dname. 
end repeat. 
EXECUTE. 
+0

ありがとう@ eli-k、これはまさに私の意図した機能です。ご協力いただきありがとうございます。 – George

1

あなたが大規模なデータセットを持っている場合は、あなたのデータセット内の条件を7×数値で評価しています。それ以上のことは意識してください。

の場合は、しかし、あなたは、あなただけの一度だけ、すべてのケースをループして同じ結果を得ることができDO IF/END IFを使用しています。大規模なデータセットでは、これは処理時間に大きな影響を与える可能性があります。

do if Day_of_Interest=1. 
    compute Temperature=Sunday. 
else if Day_of_Interest=2. 
    compute Temperature=Monday. 
else if Day_of_Interest=3. 
    compute Temperature=Tuesday. 
else if Day_of_Interest=4. 
    compute Temperature=Wednesday. 
else if Day_of_Interest=5. 
    compute Temperature=Thursday. 
else if Day_of_Interest=6. 
    compute Temperature=Friday. 
else if Day_of_Interest=7. 
    compute Temperature=Saturday. 
end if. 

上記のようにコードを追加する必要がありますが、コンパクト/簡略なコードと処理時間のバランスを取る必要があります。あなたはコードの中でDO IFの各文を下降頻度のDay_of_Interestに記載したところでこれをさらに進めることができます。これらは原則として、大きなデータセットの処理に使用される技術の一部です。

+0

ありがとう、それは心に留めておくのが良いことです。データセットには約1,000万件のケースがあるので、特に注意するのが良いです。残念ながら、私は同僚がループを経験していないのでIF文を使用しなければならず、同様の操作を行う必要があります。それにもかかわらず、私は本当にあなたの時間を感謝し、あなたの思いやりのあるスポット・オンの答えに感謝します。 – George

+0

「IF IF」対「IF」の使用には、それ以上の複雑さはありません。 –

関連する問題