全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2651 4
2012-11-23
各位老师好,我有一个数据集,第1个变量是学生姓名,后面有20个变量,分别代表各科成绩
想在数据集中,对每个学科的各个学生成绩进行排序,然后把每个学科的名字显示在各科名字的下面。
我自己试了一下,只能单独对某个变量进行排序,没法对所有的学科进行排名并显示名字
比如,
复制代码
想得到的数据格式是:
english chinese nature
  B         A         C
  A         C         A
  B         B         B
这就表示B的英语最好,A的中文最好,C的自然最好
或者进一步的,想得到其成绩并显示,比如数据格式是:
english chinese   nature
   96        96        98
   95        94        96
   92        91        80
主要是想把这些数据都显示在同一个数据集里
请问应该怎么编程呢?用proc sort应该不行吧?谢谢


......
请指教

二维码

扫码加我 拉你入群

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

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

全部回复
2012-11-23 12:17:53
data x;
input name$ english chinese nature@@;
cards;
A 95 96 96
B 96 91 80
C 92 94 98
;

proc transpose data=x out=x1;
run;

data x2;
   set x1;
   call sortn(of col:);
run;

proc transpose data=x2 out=x3(drop=_name_);
run;

proc sort data=x3;
   by descending english;
run;
二维码

扫码加我 拉你入群

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

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

2012-11-23 12:42:46
教授,谢谢您的指点,那我如果想得到这一步的数据,请问应该怎么做呢?
english chinese nature
   B         A         C
   A         C         A
   B         B         B
这就表示B的英语最好,A的中文最好,C的自然最好
二维码

扫码加我 拉你入群

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

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

2012-11-23 13:09:40
data x;
input name$ english chinese nature@@;
  call symputx(cats("name",_n_),name);
cards;
A 95 96 96
B 96 91 80
C 92 94 98
;

proc transpose data=x out=x1;
run;

data x2;
   set x1;
   array col(*) col1-col3;
   array col_c(*) $20 col_c1-col_c3 ;
   do i=1 to dim(col);
      col_c(i)=cats(col(i),"_",resolve(cats("&","name",i)));
   end;
   call sortc(of col_c:);
run;

proc transpose data=x2 out=x3(drop=_name_);
    var col_c:;
run;

proc sort data=x3;
   by descending english;
run;
二维码

扫码加我 拉你入群

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

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

2012-11-23 14:06:04
非常感谢教授,差不多就是要得到这个结果的,谢谢您
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群