楼主: dollarkfl
9068 22

[问答] SAS中如何对每条记录(行)排序 [推广有奖]

11
dollarkfl 发表于 2014-2-17 20:17:55
weitingkoala 发表于 2014-2-17 20:11
转置后分别对每列排序,再拼接,不知道我说清楚没有
把其中一列排好之后,其他列都跟着动,你不会让我一列一列的拆成数据集,拆5个数据集,然后拼数据集?

12
你的太阳 发表于 2014-2-17 20:26:37
data test;
  set a;
  array temp(5) v1-v5;
  do i = 1 to 5;
    do j = 1 to 5;
      if temp(i)>temp(j) then
        do;
          _temp=temp(i);
          temp(i)=temp(j);
          temp(j)=_temp;  
        end;
    end;
  end;
  drop i j _temp;
run;

13
weitingkoala 发表于 2014-2-17 20:26:55
data a ;
input v1 v2 v3 v4 v5 ;
cards ;
2 5   3  14   7
3 9   1  6   19
4 15  2  7   13
6 3  14  2   9
5 7  3  11   6
;
run;
proc transpose data=a out=b;
run;
%macro test;
%do i=1 %to 5;
data temp&i.;
set b;
keep col&i.;
run;
proc sort data=temp&i.;
by col&i;
run;
%end;
data c;
merge temp1 temp2 temp3 temp4 temp5;
run;
%mend test;
%test;
proc transpose data=c out=d;
run;

14
weitingkoala 发表于 2014-2-17 20:28:09
weitingkoala 发表于 2014-2-17 20:26
data a ;
input v1 v2 v3 v4 v5 ;
cards ;
效率可能不高 但能实现

15
dollarkfl 发表于 2014-2-17 22:30:43
你的太阳 发表于 2014-2-17 20:26
data test;
  set a;
  array temp(5) v1-v5;
雷锋!雷锋啊!

16
dollarkfl 发表于 2014-2-17 22:31:25
weitingkoala 发表于 2014-2-17 20:28
效率可能不高 但能实现
都是雷锋!

17
qingyuan9864 发表于 2014-2-17 22:56:33 来自手机
不可能吧
学无止境,贵在虚心求教

18
farmman60 发表于 2014-2-18 10:40:29
data a ;
input v1 v2 v3 v4 v5 ;
cards ;
2 5   3  14   7
3 9   1  6   19
4 15  2  7   13
6 3  14  2   9
5 7  3  11   6
;
run;

data want;
  set a;
  array new_v(5);
  do i=1 to dim(new_v);
    new_v(i)=smallest(i,of v1-v5);
  end;
  drop v: i;
  run;

19
dollarkfl 发表于 2014-2-18 12:02:03
farmman60 发表于 2014-2-18 10:40
data a ;
input v1 v2 v3 v4 v5 ;
cards ;
谢谢,我试试

20
huntdreamer 发表于 2014-2-24 10:11:00
典型的冒泡算法!

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

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