2016-11-15 2 views
-1

다른 연령대의 측정 과목 제목이 있습니다. 그것은 다음과 같습니다 : 나는이 작업을 수행하기 위해 SAS를 사용하고첫 행에서 대상 당 행을 빼는 방법은 무엇입니까?

Subject Gender Datasource MHGCAT_COD_4 MHGCAT_COD_6 MHGCAT_COD_11 age_ga window 
124  1  1   21   122   1212   38  0 
124  1  1   21   122   1212   39  1 
124  1  1   21   122   1212   41  3 
124  1  1   21   122   1212   43  5 
125  1  1   21   122   1212   33  0 
125  1  1   21   122   1212   38  5 

: enter image description here

Subject Gender Datasource MHGCAT_COD_4 MHGCAT_COD_6 MHGCAT_COD_11 age_ga 
124  1  1   21   122   1212   38 
124  1  1   21   122   1212   39 
124  1  1   21   122   1212   41 
124  1  1   21   122   1212   43 
125  1  1   21   122   1212   33 
125  1  1   21   122   1212   38 

내가 이런 식으로 계산 여분의 열을 만들려고합니다. 감사!

형식이 틀린 경우 이미지가 첨부됩니다.

+0

새로운 변수에 대한 논리를 자세히 설명하십시오. 시도한 코드를 표시하십시오. – Tom

+0

새 변수는 첫 번째 age_ga 값을 기준으로두고 그 이후의 다른 모든 값은 기준 이후입니다. 데이터는 이미 age_ga로 정렬됩니다. 나는 2 행 1 행을 뺀다. 그러나 같은 것을하기 위해 새로운 피사체 ID마다 다시 사이클을 시작하도록 코드에 요청할 수는 없다. 그래서 창, 행 1 = 0..window, 행 2 = age_ga 행 2 - age_ga 행 1 ..... 창, 행 5 = 0, 창 행 6 = age_ga 행 6 - age_ga 행 5 .. –

답변

0

BY 변수 처리를 사용하십시오.

data want ; 
    set have ; 
    by subject age_ga ; 
    if first.subject then index_age = age_ga ; 
    retain index_age ; 
    window = age_ga - index_age; 
run; 
+0

이것은 작동합니다 ! index_age를 유지하는 대신 삭제하는 것이 좋습니다. 해결책을 가져 주셔서 감사합니다! –