2016-11-06 3 views
0

다음 코드를 사용하여 열의 최대 값과 최소값의 차이를 계산했지만 스마트하게는 좋아하지 않습니다. 그럼 누군가 나에게 제안을 해줄 수 있을까?SAS - 최대 값과 최소값의 차이를 계산하는 방법은 무엇입니까?

p.s. 차이를 기반으로 데이터 집합을 삭제하고자하기 때문에 차이점을 새 변수로 데이터 집합에 다시 넣어야합니다.

proc univariate noprint date=test; 
var time_l_; 
output out=result max=max min=min; 
run; 

data test; 
set result test; 
run; 

data test; 
set test; 
gap=max-min; 
run; 

답변

0

당신은 꽤 좋은 결과를 얻을 수 있다고 생각합니다. 이것은 절대 가장 빠른 방법은 아니지만 빠른 방법보다 훨씬 덜 복잡하기 때문에 놀라운 성능을 필요로하지 않을 때 가장 좋습니다.

최대/최소 데이터 세트를 만든 다음 if _n_ = 1 then set result;을 사용하면 최대/최소 데이터 세트를 한 번 가져옵니다. 변수는 SET 문으로 가져 오기 때문에 자동으로 RETAIN됩니다. 그런 다음 동일한 데이터 단계에서 간격을 계산하십시오.

proc univariate noprint data=sashelp.class; 
    var age; 
    output out=result max=max min=min; 
run; 

data test; 
    if _n_=1 then set result; 
    set sashelp.class; 
    gap = max-min; 
run; 
0

SQL 솔루션은 간단하지만 로그에 재사용 관련 메시지가 남습니다.

Proc SQL; 
Create table want as 
Select *, max(age) as max_age, min(age) as min_age, calculated max_age - calculated min_age as age_diff 
From have; 
Quit; 
0

range 기능을 사용하는 간단한 SQL 솔루션 :

proc sql; 
create table want as 
    select *,range(age) as age_range 
    from sashelp.class; 
quit; 
관련 문제