一、数据导入
filename export "C:\User\Data\new_c_register.csv" encoding='utf-8';
proc import out=cancer.new_c_register
datafile=export
dbms=csv replace;
run;
二、复制数据集
*将ourlib逻辑库中的数据集复制到临时Work逻辑库中;
proc copy noclone in=ourlib out=work;
select Register_new;
run;
也可以直接复制想要的数据集,粘贴到Work逻辑库中。
三、生成变量Format
proc format;
value $VAR1
test_1='pre_test'
test_2='ongoing'
test_3='after_test';/*Character*/
value Smoke_3cat
1='Never'
2='Seldom'
3='Daily';
run;
四、加法运算
data a;
set a;
sum_1=var1+var2+var3;
sum_2=sum (of var1-var3);
run;
需要注意:二者均可以,但如果数据出现缺失,sum_1的结果会是缺失,sum_2会是所有非缺失值之和。
五、数据集合并
data merge_new;
merge Student(in=x) visit_record(keep=id visit_site;/*如果需要这里可以保留指定的变量*/
by id;
if x then output;
run;
六、计算某个变量出现的次数
proc sort data=a1;
by visit_case visit_site id;
run;
data a2;
set a1;
by visit_case visit_site id;
retain order;
if first.visit_site then do;
order=1;
end;
else do
order=order+1;
end;
run;
七、proc report
proc report data=a1 out=a1_output nowd;
label visit_site='访问地点';
format sex_2cat sex_2cat.;
column id visit_site sex_2cat order, (record_id percentage);/*变量顺序即为展示的顺序*/
define visit_case/group;/*visit_case这个变量用分组形式展示*/
define sex_2cat/display;
define order/across;/*这里注意看column后有一个比较特殊的写法,这个出来的结果是每一个order计数下的id和百分比*/
run;
八、截取字符
data a1;
set a1;
z=substr(Year_diagnose,1,4);/*意思是从第一个字符开始,截取前四个字符,例如‘2019-01-01(字符形式的值)’,截取后z就是2019*/
run;
九、导出excel(批量导出结果)
ods excel file='C:\User\Output\结果输出.xlsx';
ods excel option(sheet_interval='PROC' sheet_name='数据总览');
proc report data=a1 nowd;
...
quit;
ods excel option(sheet_interval='PROC' sheet_name='按省份分布');
proc print data=a1 noobs label;
...
quit;
ods excel close;
这样导出的数据是一个大的excel,包含不同sheet,每一个sheet就是proc语句运行的结果。
十、导出数据(proc export)
proc export data=a1
outfile='C:\User\Output\ALL.xlsx'
dbms=xlsx
replace
label;/*使用各变量label作表头*/
run;