在SAS中拆分数据集

时间:2016-12-19 10:33:11

标签: split sas subset

我有一个非常大的数据集,包括连续和分类变量&我需要把它分成连续的和分类。

数据示例:

   AgeBand Name Price 

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

我想拥有2个数据集: 1.包括ageband&名称 售价 任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

管理这个的正确方法是拥有一个数据字典,它可以是一个文件(可能是excel或其他格式,或本机SAS),它存储变量名称及其类型 - 无论是分类还是连续。

然后,您可以从此数据字典创建变量列表,以便拆分变量。

想象你有一个excel文件"c:\mydata\data_dictionary.xlsx",然后:

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;

当然,您需要确保在两个数据集中保留您的ID变量(无论是什么)。

答案 1 :(得分:-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;