2016-12-19 1 views
-4

연속적인 & 범주 형 변수로 구성된 매우 큰 데이터 세트가 있습니다. & 각각을 연속적으로 & 범주로 분리해야합니다. 데이터의SAS에서 데이터 세트 나누기

예 :

AgeBand Name Price 

    20-30 A 200  
    30-40 B 300  
    40-50 C 400  
    50-60 D 100 

내가 원하는 2 개 데이터 세트를 가지고 : 1.Comrising의 ageband 2.Price 이 하나가 도울 수 & 이름은?

+0

예제 데이터를 추가 할 수 있습니까? 또는 변수에 대한 자세한 정보? 즉 그들은 모두 숫자이며, 범주 적 변수는 모든 문자 등입니다. –

+0

AgeBand 10-20,20-30,30-40,40-50, 지불 금액 -20,30,40,50, Type-A, B, C, D – user6016731

+0

질문에 데이터를 포함시켜 재현 할 수 있도록하는 것이 가장 좋습니다. 또한 어떤 변수를 분리하고 싶은지 확실하지 않습니다. –

답변

-1

변수 유형을 식별하려면 proc contents을 사용하십시오. 이 방법 당신은 당신이 원하는 특정 변수를 입력 할 필요가 없습니다 :

이 관리하는 적절한 방법은 아마도 엑셀 또는 다른 형식의 파일 (될 데이터 사전을 가지고하는 것입니다
proc contents data = sashelp.class noprint out=names(keep=name type); run; 

proc sql noprint; 
    select name 
    into: cont_vars separated by " " 
    from names 
    where type = 1; 

    select name 
    into: cat_vars separated by " " 
    from names 
    where type = 2; 
quit; 

%put &cont_vars.; 
%put &cat_vars.; 

data cont_vars(keep=&cont_vars.) cat_vars(keep=&cat_vars.); 
    set sashelp.class; 
run; 
+0

그래서 숫자 형 변수가 있다면 어떻게 될까요? 이것에 대처하는 유일하게 확실한 방법은 @Joe의 답변에 자세히 나와 있습니다. – Longfish

+0

좋은 질문입니다. 나는 그것을 범주적이지 않은 문자로 읽었습니다. – Foxer

1

, 또는 네이티브 SAS)를 사용하여 변수 이름과 유형을 저장합니다.

그런 다음이 데이터 사전에서 변수 목록을 만들어 변수를 분리 할 수 ​​있습니다.

다음, 당신은 엑셀 "c:\mydata\data_dictionary.xlsx" 파일이 상상 : 당신은 물론 두 데이터 세트에 (즉 무엇이든) 귀하의 ID 변수를 계속 확인해야

proc import file="c:\mydata\data_dictionary.xlsx" 
      out=datadict dbms=xlsx replace; *or dbms=excel or excelcs depending on your installation and version; 
    sheet="datadict_sheet"; 
run; 


proc sql; 
    select colname 
    into :cat_var_list separated by ' ' 
    from datadict 
    where coltype = 'Categorical' 
    ; 
    select colname 
    into :cont_var_list separated by ' ' 
    from datadict 
    where coltype = 'Continuous' 
    ; 
quit; 

data cat_vars(keep=&cat_var_list. idvar) cont_vars(keep=&cont_var_list. idvar); 
    set yourdata; 
run; 

.

관련 문제