楼主: fadisi1994
9444 8

[问答] sas练习题 [推广有奖]

  • 0关注
  • 0粉丝

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
90 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2015-11-24
最后登录
2016-1-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

sas新手,之前几节课没好好听,求各位大神解决这道很基础的题(前5题已经做好了,求6-13的代码过程),求帮!

设某班的学生分为三组,一次考试成绩如下(数学满分100,语文满分120):

  

姓名

  

性别

数学

语文

组别

李明

92

98

1

张红艺

89

106

1

王思明

86

90

1

  

姓名

  

性别

数学

语文

组别

张聪

95

92

2

刘颖

98

101

2

高红

91

92

2

  

姓名

  

性别

数学

语文

组别

赵强

93

99

3

李云芳

96

102

3

周山

88

98

3

(1)      请把上述三个数据表输入为SAS数据集chengji1,chengji2,chengji3.

(2)      请合并(1)中的三个数据集得到整个班学生的成绩chengji0.

(3)      计算每个学生两门课的平均成绩(百分制),并按此由高到低排名(得到新数据集chengji)。

(4)      找出该班数学成绩>90分的学生(得到新数据集math90)。

(5)      在数据集chengji0中,找出该班每组平均成绩最低的人,得到新数据集last,并且要求数据集last中只包含学生姓名、组别和平均成绩。

(6)      计算该班学生的数学总分,以及数学平均分。

(7)      计算该班每个学生的数学成绩与该班数学平均分之差。

(8)      随机抽三名学生,并创建包含这三名学生姓名、数学成绩、语文成绩的宏文本。

(9)      画出该班学生数学成绩、语文成绩关系的二维图。

(10)  用宏编写程序:在包含学生信息的数据集x中,找出数学成绩大于y且小于z的学生。

(11)  调用宏,在随机抽出的3名学生中找出数学成绩大于80小于90的学生。

(12)  随机抽n名学生,并寻找其中平均成绩第一和最后一名的学生,同时将每次抽取、寻找的结果放在同一数据集中。

(13)  随机抽取3名,4名,...,8名学生,即共抽取6次,并计算每次抽取后学生的平均成绩的标准差,同时将学生个数与标准差作图,以观察标准差有无随学生个数增加而减少的趋势。





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:练习题 sas数据集 Cheng Chen Last 练习题

沙发
fidodidocw 发表于 2015-11-24 16:41:01 |只看作者 |坛友微信交流群
什么课程?

使用道具

藤椅
junge1018 发表于 2015-11-25 00:50:43 来自手机 |只看作者 |坛友微信交流群
本人也新手 照着书做到了第七题 后边的在思考

使用道具

板凳
_appilepie_ 发表于 2015-11-25 13:57:46 |只看作者 |坛友微信交流群
(6)求数学平均分。
data a;
input name $ sex $ math chin group;
cards;
lm m 92 98 1
zhhy f 89 106 1
;
run;
proc means maxdec=2;
  var math;
  class group;
run;

使用道具

报纸
_appilepie_ 发表于 2015-11-25 14:05:03 |只看作者 |坛友微信交流群
请指正下,(9)题是这样做吗?
data a;
input name $ sex $ math chin group;
cards;
lm m 92 98 1
zhhy f 89 106 1
...
;
run;
proc plot;
  plot math*chin='*';
run;


使用道具

地板
_appilepie_ 发表于 2015-11-25 17:16:09 |只看作者 |坛友微信交流群
求数学平均分(按照班级分组),这样也可以:
data a;
input name $ sex $ math chin group;
cards;
lm m 92 98 1
zhhy f 89 106 1
...
;
run;
proc tabulate data=a;
  class group;
  var math;
  table group*math,mean;
run;


使用道具

7
闫浪 学生认证  发表于 2016-1-10 11:56:12 |只看作者 |坛友微信交流群
也是新手 可以参照 https://bbs.pinggu.org/forum.php?mod=viewthread&tid=4172178&page=1&extra=#pid33717414

使用道具

8
rosywwj 发表于 2017-6-16 20:12:37 |只看作者 |坛友微信交流群
(6),(7):
proc summary data=chengji1;
var math;
output out=a(drop=_:) mean=math_mean sum=math_sum;
run;
proc print data=a;
run;
data a;
set a;
call symput('mean_math', math_mean);
call symput('sum_math',math_sum);
run;
data diffmath;
set chengji0;
math_diff=math-&mean_math;
run;
proc print;
run;
新手,参考

使用道具

9
popodan 在职认证  发表于 2017-6-18 10:09:16 |只看作者 |坛友微信交流群
第6题以后的:
(6)      计算该班学生的数学总分,以及数学平均分。
proc means data=chengji mean sum;
var '数学'n;
output out=maths;
run;
(7)      计算该班每个学生的数学成绩与该班数学平均分之差。
data _null_;
set maths;
call symput('math_mean',math_mean);

data difference;
set chengji0(drop='语文'n);
diff= 数学-&math_mean;
run;
(8)      随机抽三名学生,并创建包含这三名学生姓名、数学成绩、语文成绩的宏文本。


%macro randomn(random,n);
data &random(keep=姓名 数学 语文);
sampsize=&n;
obsleft=totobs;
do while(sampsize>0);
pickit+1;
if ranuni(0)<sampsize/obsleft then do;
set chengji0 point=pickit nobs=totobs;
output;
sampsize=sampsize-1;
end;
obsleft=obsleft-1;
end;
stop;
run;
%mend randomn;

%randomn(random,3)
(9)      画出该班学生数学成绩、语文成绩关系的二维图。
proc plot data=chengji0;
plot 数学*语文;
run;
(10)  用宏编写程序:在包含学生信息的数据集x中,找出数学成绩大于y且小于z的学生。
%macro search(x,y,z);
data search;
set &x;
where &y<数学<&z;
run;
%mend search;
(11)  调用宏,在随机抽出的3名学生中找出数学成绩大于80小于90的学生。
%randomn(random,3)
%search(random,80,90)
(12)  随机抽n名学生,并寻找其中平均成绩第一和最后一名的学生,同时将每次抽取、寻找的结果放在同一数据集中。
data a;
set random;
ave=mean(数学,语文);

proc sort data=a out=b;
by descending ave;
run;
此题不是很理解“每次抽取、寻找的结果放在同一数据集中”,因为寻找的最大最小成绩本身就是从抽取的结果中选的,本身就是在random数据集中的。所以我的理解就是要把随机选出的数据按平均成绩排序,第一个和最后一个学生就是要寻找的学生。
(13)  随机抽取3名,4名,...,8名学生,即共抽取6次,并计算每次抽取后学生的平均成绩的标准差,同时将学生个数与标准差作图,以观察标准差有无随学生个数增加而减少的趋势。
%let n=8;  /*依次从3到8抽取就好*/
%randomn(random,&n)

data a;
set random;
ave=mean(数学,语文);

proc means data=a stddev;
var ave;
output out=a&n stddev=std;
run;
data a0(rename=(_freq_=n));
set a3-a8;
run;

proc plot data=a0;
plot n*std='*';
run;

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-6 09:56