input id sex$ chinese math chemistry@@
cards
1 女 89 67 59
2 女 89 67 59
3 女 92 84 62
4 女 92 84 62
5 男 89 85 59
6 男 89 85 59
7 女 95 79 65
8 女 95 79 65
9 女 02 82 62
10 女 92 82 62
11 女 90 80 60
12 女 90 80 60
13 女 91 90 61
14 女 91 90 61
15 男 88 77 58
16 男 88 77 58
17 女 85 76 55
18 女 85 76 55
19 女 90 86 60
20 女 90 86 60
21 男 91 73 61
22 男 91 73 61
23 女 90 81 60
24 女 90 81 60
25 男 88 82 58
26 男 88 82 58
27 女 91 71 61
28 女 91 71 61
29 女 92 75 62
30 女 92 75 62
run
proc sql /*更改 性别 & 分数*/
update class set chinese=95 where id=20
update class set sex='女' where id=25
quit
proc sql/*计算 总成绩 平均成绩*/
select id,(chinese+math+chemistry) as total,(chinese+math+chemistry)/3 as average
from class
order by average desc
quit
proc tabulate data=class/*计算 均值 标准差 偏度峰度*/
class sex
var chinese math chemistry
table sex,(chinese math chemistry)*(mean std Skewness Kurtosis)
run
/*****************************************************************************/
proc sql/*分级 优 良 中 频数 条形图*/
alter table class
add rank char
update class set rank='优' where math>=85
update class set rank='中' where math<=74
update class set rank='良' where math>=75 & math<=84
quit
proc freq data=class
table sex*rank/nopercent norow nocol
run
proc sort data=class
by sex
run
proc gchart data=class
vbar rank
by sex
run
/*****************************************************************************/
proc sql/* X' Y' Z'*/
create table class1 AS
select class.id,
class.sex,
(class.chinese ** 0.5) format=BEST6.2 AS chinese1,
(class.math ** 0.5+5) format=BEST6.2 as math1,
(case class.sex
when '男'
then class.chemistry ** 0.5+5
when '女'
then class.chemistry ** 0.5+10
end) format=BEST6.2 as chemistry1
from class
quit代码比较繁琐,建议你用SAS-EG模块做比较简单
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)