2017-07-04 5 views
0

を必要とする私がいる:SAS、設定データの下に明確

DATA Test1; 
INFILE DATALINES DSD MISSOVER; 
INPUT A B C; 
DATALINES; 
1, 2, 3 
1, , 
, , 3 
, , 
; 
RUN; 

をその後、私は2つのデータセットの下に作成します。Test2をで

DATA Test2; 
SET Test1; 
i + a + b + c; 
RUN; 

DATA Test3; 
SET Test1; 
j + a + b + c + i; 
RUN; 

、iの値が常に各6であります観察。

Test3では、Jの値はすべて0であり、iはピリオドです。

私はSASがこの場合どのように動作するのか考えようとしましたが、私の周りに頭を浮かべることはできません。助けてもらえますか?

+0

sum文を調べてください。 'i + 1;'はsum文の例です。 'i + a + b + c;'は次のようになります。sumステートメントの仕組みを理解すれば、出力を理解できるはずです。 – Quentin

答えて

2

データステップでは、sum文の例を使用しています。和文の形式は次のとおり

variable + expression ; 

基本的に最初の例ではそう

retain variable 0; 
variable=sum(variable,expression); 

の相当する

i + a + b + c; 

式である(A + B + C) 。 1つ以上の変数が欠落しているため、最初のものを除くすべての観測でA + B + Cが欠落することに注意してください。したがって、最初の観測からの6は保持されますが、何も追加されません。 2番目のケースでは、存在しない変数Iを参照します。この変数は、すべての観測値に欠損値を持ちます。 (おそらく、そのステップが第2のデータセットから読み込むことを意味していましたか?)それで、すべての観測に対して(a + b + c + i)がなくなり、Jは初期値の0を保持します。

本当に私が欠損していない値をすべて累積したければ、それを使用してください。

i + sum(a,b,c); 
+0

多くのありがとう。それはそれをはっきりと説明します。 – SumB

関連する問題