全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2217 5
2010-08-06
求助:数据排序?
    请教:有一些数据,如下:
data a;  /*原始数据,变量名为 d0 到 d9*/
input d0 d1 d2 d3 d4 d5 d6 d7 d8 d9;
cards;
1 3 0 6 9 7 4 2 8 5
10 19 2 8 6 15 3 14 18 11
9 2 10 5 11 3 4 8 1 6
;
run;

data a1;
set a;
px0=ordinal(1,of d0-d9);  /*按从小到大顺序排列d0—d9*/
px1=ordinal(2,of d0-d9);
px2=ordinal(3,of d0-d9);
px3=ordinal(4,of d0-d9);
px4=ordinal(5,of d0-d9);
px5=ordinal(6,of d0-d9);
px6=ordinal(7,of d0-d9);
px7=ordinal(8,of d0-d9);
px8=ordinal(9,of d0-d9);
px9=ordinal(10,of d0-d9);
array as1{10} d0-d9;
array as2{10} px0-px9;
array as3{10} pxwz_d0-pxwz_d9;
do i1=1 to 10;
if as1{i1}=as2{i1} then as3{i1}=i1;  /*是想得到:d0在由小到大的排序中出现在第几位,d1出现在第几位。。。*/
end;
run;

求助:这程序不对,该如何做?

谢谢!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-6 10:50:11
data a;  
input d0 d1 d2 d3 d4 d5 d6 d7 d8 d9;
array num(10) $;
array d d0-d9;
array pos_d pos_d0-pos_d9;
do i=1 to 10;
   num(i)=scan(_infile_,i);
end;
call sortc(of num1-num10);
sorted=catx(" ",of num1-num10);
do i=1 to 10;
   j=1;
   do while (d(i) ne scan(sorted,j));
      j+1;
   end;
   pos_d(i)=j;
end;
drop i j num: sorted;
cards;
1 3 0 6 9 7 4 2 8 5
10 19 2 8 6 15 3 14 18 11
9 2 10 5 11 3 4 8 1 6
;
run;
二维码

扫码加我 拉你入群

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

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

2010-8-6 11:49:47
d有重复值吗?
复制代码
二维码

扫码加我 拉你入群

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

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

2010-8-6 13:54:11
谢谢指教!!!
二维码

扫码加我 拉你入群

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

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

2010-8-7 10:17:24
pobel 发表于 2010-8-6 10:50
data a;  
input d0 d1 d2 d3 d4 d5 d6 d7 d8 d9;
array num(10) $;
array d d0-d9;
array pos_d pos_d0-pos_d9;
do i=1 to 10;
   num(i)=scan(_infile_,i);
end;
call sortc(of num1-num10);
sorted=catx(" ",of num1-num10);
do i=1 to 10;
   j=1;
   do while (d(i) ne scan(sorted,j));
      j+1;
   end;
   pos_d(i)=j;
end;
drop i j num: sorted;
cards;
1 3 0 6 9 7 4 2 8 5
10 19 2 8 6 15 3 14 18 11
9 2 10 5 11 3 4 8 1 6
;
run;
You are way overkill. see simplied one below.

data a;  
input d0 d1 d2 d3 d4 d5 d6 d7 d8 d9;
call sortn(of d0-d9);

cards;
1 3 0 6 9 7 4 2 8 5
10 19 2 8 6 15 3 14 18 11
9 2 10 5 11 3 4 8 1 6
;
run;

proc print;run;
二维码

扫码加我 拉你入群

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

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

2010-8-8 09:23:04
5# bobguy 呵呵,好像曲解了LZ的意思了。 不过还真没见过这个函数,学习了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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