output

发布时间 2024-01-08 11:45:21作者: 蜂柚红茶
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;