2014-09-03 2 views
1

변수에 주파수를 작성해야하는데, proc freq 출력이 아니라 데이터 세트의 실제 변수가 필요합니다. 아래 코드를 사용하여 ID로 실행 횟수를 만듭니다.SAS : 빈도 변수를 생성하십시오.

data work.frequencycounts; 
set work.dataset; 
count+1; 
by id; 
if first.id then count=1; 
run; 

그러나 원하는 변수는 실행 횟수가 아니라 최종 횟수입니다. 추가하려고했으나 데이터 단계의 끝까지

frequency=last.count; 

을 추가하려고 시도했지만 작동하지 않았습니다.

답변

2

SAS의 각 행은 대부분의 경우 개별적으로 처리됩니다. 패스의 수익금을 데이터 세트를 통해 직접 가져 와서 각 행에 배치 할 수는 없습니다.

다행히도이를 수행하는 데 약 100 가지 방법이 있습니다.

여기가 가장 유사한 방법입니다.

data work.frequencycounts; 
do _n_ =1 by 1 until (last.id); 
    set work.dataset; 
    by id; 
    if first.id then count=0; 
    count+1; 
end; 
frequency=count; 
do _n_ = 1 by 1 until (last.id); 
    set work.dataset; 
    by id; 
    output; 
end; 
run; 

이것은 매우 간단하게 실행되어 카운트를 계산 한 다음 두 번째 패스의 데이터 세트에 배치합니다. 이것은 이중 DoW 루프입니다.

또 다른 옵션은 PROC FREQ를 수행하고 병합하는 것입니다. 매우 쉽습니다. 세 번째 옵션은 PROC SQL을 사용하여 SQL 단계에서 카운트를 계산하고 병합합니다 (SAS가 자동으로 수행합니다).

관련 문제