2016-07-18 11 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 및 D- 타입을 만들기 위해 노력하고 있어요 :

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