楼主: 一眼瞬间
2444 9

一共五位数,按照前两位数sort怎么编程呢? [推广有奖]

  • 0关注
  • 1粉丝

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
730 个
通用积分
0.0001
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
903 点
帖子
376
精华
0
在线时间
309 小时
注册时间
2010-3-14
最后登录
2023-8-19

楼主
一眼瞬间 发表于 2010-3-19 13:38:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
RT。

sort by的那个variable的值一共有五位数,

请教大家怎么按照前两位sort呢?

如果是按照后三位呢?

另外,这个variable是字符型变量,需不需要转换成数值型的先呢?
二维码

扫码加我 拉你入群

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

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

关键词:怎么编程 SOR 两位数 Variable 字符型变量 位数 sort

回帖推荐

bobguy 发表于9楼  查看完整内容

If the variable is num, it is better to operate it in num calculation. data t1; do i = 1 to 10; x=int(10000+ranuni(12345)*90000); x12=int(x/1e3); x345=mod(x,1e3); output; end; run; proc print; run; [/quote] Could you explain a little bit? Why is it better to operate it in num calculation? [/quote] The numeric values have a meaningful scal ...

醉_清风 发表于3楼  查看完整内容

用substr 重新生成一个新变量再排序 如果是字符型的 直接排序 不用转成数值型的 比如: data a; input t:$3.; cards; 999 777 555 666 111 ; run; proc sort data=a out=b; by t; run;

本帖被以下文库推荐

沙发
sun_man 在职认证  发表于 2010-3-19 13:44:30
先 生成两个变量,这样好像是比较笨的办法哈
小剑一把 混迹经管之家 呵呵

藤椅
醉_清风 发表于 2010-3-19 13:46:01
用substr 重新生成一个新变量再排序
如果是字符型的 直接排序 不用转成数值型的
比如:
data a;
        input t:$3.;
        cards;
        999
        777
        555
        666
        111
        ;
run;

proc sort data=a out=b;
        by t;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

从来不需要想起 永远也不会忘记

板凳
一眼瞬间 发表于 2010-3-19 13:52:35
新变量怎么生成呢?

报纸
醉_清风 发表于 2010-3-19 14:05:51
前两位
b=substr(compress(a),1,2);
从来不需要想起 永远也不会忘记

地板
一眼瞬间 发表于 2010-3-19 14:26:56
醉_清风 发表于 2010-3-19 14:05
前两位
b=substr(compress(a),1,2);
谢谢LS!

7
bobguy 发表于 2010-3-20 09:37:13
一眼瞬间 发表于 2010-3-19 13:38
RT。

sort by的那个variable的值一共有五位数,

请教大家怎么按照前两位sort呢?

如果是按照后三位呢?

另外,这个variable是字符型变量,需不需要转换成数值型的先呢?
If the variable is num, it is better to operate it in num calculation.

data t1;
   do i = 1 to 10;
       x=int(10000+ranuni(12345)*90000);
       x12=int(x/1e3);
       x345=mod(x,1e3);
       output;  
    end;
run;

proc print; run;

8
一眼瞬间 发表于 2010-3-20 15:57:56
bobguy 发表于 2010-3-20 09:37
一眼瞬间 发表于 2010-3-19 13:38
RT。

sort by的那个variable的值一共有五位数,

请教大家怎么按照前两位sort呢?

如果是按照后三位呢?

另外,这个variable是字符型变量,需不需要转换成数值型的先呢?
If the variable is num, it is better to operate it in num calculation.

data t1;
   do i = 1 to 10;
       x=int(10000+ranuni(12345)*90000);
       x12=int(x/1e3);
       x345=mod(x,1e3);
       output;  
    end;
run;

proc print; run;
Could you explain a little bit? Why is it better to operate it in num calculation?

9
bobguy 发表于 2010-3-21 09:20:01
一眼瞬间 发表于 2010-3-20 15:57
bobguy 发表于 2010-3-20 09:37
一眼瞬间 发表于 2010-3-19 13:38
RT。

sort by的那个variable的值一共有五位数,

请教大家怎么按照前两位sort呢?

如果是按照后三位呢?

另外,这个variable是字符型变量,需不需要转换成数值型的先呢?
If the variable is num, it is better to operate it in num calculation.

data t1;
   do i = 1 to 10;
       x=int(10000+ranuni(12345)*90000);
       x12=int(x/1e3);
       x345=mod(x,1e3);
       output;  
    end;
run;

proc print; run;
Could you explain a little bit? Why is it better to operate it in num calculation?
The numeric values have a meaningful scale. When a char function operates on a num variable, it usually needs a data type convertion which could take additional CPU time. The time is double in below.

367  %let dsn=_null_;
368
369  data &dsn;
370   do j=1 to 10;
371     do i = 1 to 10000;
372         x=int(10000+ranuni(12345)*90000);
373         x12=int(x/1e3);
374         x345=mod(x,1e3);
375          output;
376      end;
377      end;
378  run;

NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds


379
380  data &dsn;
381   do j=1 to 10;
382     do i = 1 to 10000;
383         x=int(10000+ranuni(12345)*90000);
384         x12=substr(put(x,z5.),1,2);
385         x345=substr(put(x,z5.),3,3);
386         output;
387      end;
388      end;
389  run;

NOTE: DATA statement used (Total process time):
      real time           0.06 seconds
      cpu time            0.06 seconds
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

10
一眼瞬间 发表于 2010-3-21 14:09:54
bobguy 发表于 2010-3-21 09:20
一眼瞬间 发表于 2010-3-20 15:57
bobguy 发表于 2010-3-20 09:37
一眼瞬间 发表于 2010-3-19 13:38
RT。

sort by的那个variable的值一共有五位数,

请教大家怎么按照前两位sort呢?

如果是按照后三位呢?

另外,这个variable是字符型变量,需不需要转换成数值型的先呢?
If the variable is num, it is better to operate it in num calculation.

data t1;
   do i = 1 to 10;
       x=int(10000+ranuni(12345)*90000);
       x12=int(x/1e3);
       x345=mod(x,1e3);
       output;  
    end;
run;

proc print; run;
Could you explain a little bit? Why is it better to operate it in num calculation?
The numeric values have a meaningful scale. When a char function operates on a num variable, it usually needs a data type convertion which could take additional CPU time. The time is double in below.

367  %let dsn=_null_;
368
369  data &dsn;
370   do j=1 to 10;
371     do i = 1 to 10000;
372         x=int(10000+ranuni(12345)*90000);
373         x12=int(x/1e3);
374         x345=mod(x,1e3);
375          output;
376      end;
377      end;
378  run;

NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds


379
380  data &dsn;
381   do j=1 to 10;
382     do i = 1 to 10000;
383         x=int(10000+ranuni(12345)*90000);
384         x12=substr(put(x,z5.),1,2);
385         x345=substr(put(x,z5.),3,3);
386         output;
387      end;
388      end;
389  run;

NOTE: DATA statement used (Total process time):
      real time           0.06 seconds
      cpu time            0.06 seconds
高手啊!学习了!

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

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