楼主: pingguzh
2704 4

sas数据集按行排序 [推广有奖]

  • 0关注
  • 4粉丝

菜鸟

副教授

48%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
20.1546
学术水平
1 点
热心指数
7 点
信用等级
3 点
经验
20017 点
帖子
870
精华
0
在线时间
433 小时
注册时间
2012-10-29
最后登录
2024-1-28

楼主
pingguzh 发表于 2012-11-23 12:04:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位老师好,我有一个数据集,第1个变量是学生姓名,后面有20个变量,分别代表各科成绩
想在数据集中,对每个学科的各个学生成绩进行排序,然后把每个学科的名字显示在各科名字的下面。
我自己试了一下,只能单独对某个变量进行排序,没法对所有的学科进行排名并显示名字
比如,
  1. data x;
  2. input name$ english chinese nature@@;
  3. cards;
  4. A 95 96 96
  5. B 96 91 80
  6. C 92 94 98
  7. ;
复制代码
想得到的数据格式是:
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应该不行吧?谢谢


......
请指教

二维码

扫码加我 拉你入群

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

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

关键词:sas数据集 数据集 English Chinese Englis english nature 英语 中文 姓名

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
hytc0095 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

统计爱好

沙发
pobel 在职认证  发表于 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;
已有 1 人评分学术水平 收起 理由
pingguzh + 1 热心帮助其他会员

总评分: 学术水平 + 1   查看全部评分

和谐拯救危机

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

板凳
pobel 在职认证  发表于 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;
已有 1 人评分学术水平 收起 理由
pingguzh + 1 观点有启发

总评分: 学术水平 + 1   查看全部评分

和谐拯救危机

报纸
pingguzh 发表于 2012-11-23 14:06:04
非常感谢教授,差不多就是要得到这个结果的,谢谢您
统计爱好

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 06:52