我有一个非常大的数据集,包括连续和分类变量&我需要把它分成连续的和分类。
数据示例:
AgeBand Name Price
20-30 A 200
30-40 B 300
40-50 C 400
50-60 D 100
我想拥有2个数据集: 1.包括ageband&名称 售价 任何人都可以帮忙吗?
答案 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;