2016-07-18 10 views
0

が与えられたデータセット:平均とLOCF演算を実行してnew_variableを導き出しますか?

data hello; 
    input id value; 
    cards; 
    101 22 
    101 44 
    103 22 
    104 22 
    104 55 
    106 22 
    106 . 
; 
run; 

私は次のようにID変数によってnvariableとDTYPEを作成しようとしています:

Id value Nvalue Dtype 
101 22  
101 44  
      33 Average 
103 22  
104 22  
104 55  
      38.5 Average 
106 22  
106 .  
      22 LOCF 

は、前述したように、出力を得るためにすべての可能な方法はあります。

+0

これらは平均値ではありません。それらは合計のように見えます。 ID 103にもエラーがありました。さらに、IDに複数の記録された値と複数の欠損値がある場合は、どのような出力が得られますか? – udden2903

+0

あなたはID 103を忘れているようです。希望の出力テーブルに平均値がありません。私は、ID 104の平均38が22.5 = 77 = 38.5であるはずだと思いますか? – udden2903

+0

まず、私の間違いを訂正してくれてありがとう。私はIDが複数の記録された値を持っているときに出力を導き出したいと思っています、そして、IDが欠けているときはいつでもLOCF操作を実行しようとしています。 – user3893852

答えて

1

これは私の試みです。私は、予測値が予測できないパターンで発生した場合の結果を示すために、この例をもう少し観察しました。

data have; 
    input id value; 
    cards; 
    101 22 
    101 44 
    103 22 
    104 22 
    104 55 
    106 22 
    106 . 
    107 25 
    107 . 
    107 22 
    108 . 
    108 . 
    109 10 
    109 12 
; 
run; 

proc sql; 
    create table averages as 
     select id, avg(value) as nvalue 
      from have 
       group by id; 
quit; 

data want (drop=missing); 
    set have averages; 
    by id; 
    retain missing; 

    if first.id then 
     missing=.; 

    if not last.id and value=. then 
     missing=1; 
    length dtype $10; 

    if last.id then 
     do; 
      if missing=1 then 
       dtype="LOCF"; 
      else dtype="Average"; 
     end; 
run; 
+0

多くのありがとう@ udden2903 – user3893852

関連する問題