data example1; input name$ sex$ age course$ grade ; cards; 刘明 男 21 math 85 刘明 男 21 chinese 80 王二 男 19 math 78 王二 男 19 chinese 60 ; run; proc print data=example1; title 'example1'; run; /*每行下面添加一新行*/ data exa1; set example1; output; course="average";output; run; /*每分组添加一新行*/ proc sort data=example1 out=example1; by name sex age course; run; data exa2; set example1; by name sex age; output; if last.age then do;course="average";output;end; run; /*任意行添加一新行*/ data exa3; set example1; output; if _n_=2 then do; do i=1 to 2; call missing(of name sex age course grade); name="学霸"; sex="男"; age=16; course="全部"; grade=100; output; end; drop i; end; run; /*循环中使用*/ data example2; do x=1 to 3; do y=1 to 2; a="a";output; end; end; run; /*输出多个数据集*/ data ma ch; set example1; if grade=60 then output ma; else if grade=78 then output ch; run; /*将一条观测变成多条观测*/ data example4; input name$ sex$ course$ grade @; output; input course$ grade @; output; input course$ grade; output; cards; 刘明 男 语文 85 数学 78 历史 60 王二 男 数学 60 语文 85 历史 98 ; run; /*输出统计量*/ data example5; input name$ sex$ age course$ grade ; cards; 刘明 男 21 chinese 85 刘明 男 19 math 60 李丽 女 20 chinese 98 李丽 女 20 math 70 曾阿丽 女 19 math 80 曾阿丽 男 22 chinese 78 曾阿丽 男 20 other 100 罗森 男 20 math 78 ; run; proc sort data=example5 out=example5; by name sex age course; run; proc means noprint data=example5; var grade; class name; output out=example6 mean(grade)=mgrade sum(grade)=totgrade; run;