楼主: bananacindy
9146 4

有关proc print 中按照by descending形式输出的小问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

93%

还不是VIP/贵宾

-

威望
0
论坛币
757 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
517 点
帖子
50
精华
0
在线时间
169 小时
注册时间
2013-4-20
最后登录
2020-6-5

楼主
bananacindy 发表于 2014-7-15 19:53:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
新人第一次发帖,先谢谢大家点击进来~对于数据集x,如果我的最终目的是想在proc print输出时,将变量b作为分类变量,且按照b的降序排列,分组输出a的值。我在多次尝试后,发现以下程序是可行的:
  1. data x;
  2. input a b;
  3. cards;
  4. 1 1
  5. 2 1
  6. 3 3
  7. 4 4
  8. 5 5
  9. 6 1
  10. ;
  11. run;
  12. proc sort data=x out=x2 ;
  13. by descending b;
  14. run;
  15. proc print data=x2;
  16. by b notsorted;
  17. run;
复制代码
但我有一些小问题想请教各位大牛:
1 如果不考虑我descending 的需求,直接进行proc print data=x; by b;run;的话,为什么会丢失第六行数据,即a=6 b=1,无法归集到第1 2行所在的b=1组呢?
2 我注意到proc print步中,by 指令后面也是可以跟descending的,但是只能输出b=1这一组,然后就结束了。这个是为什么呢?
3 先进行proc sort,再proc print的话,确实不会再出现问题1中丢失数据的问题了,但是如果不加notsorted的话,就只能输出b=5这一组,这是为什么呢?我的理解中在x2数据集中,大家已经按序排列好了呀,难道不是一个简单的输出就可以了吗?

问题有点琐碎,也很基础。还望各位大牛指教。谢谢!



二维码

扫码加我 拉你入群

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

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

关键词:ending print DING DESC ESC sas base

沙发
bananacindy 发表于 2014-7-20 15:10:04
好几天了一个回复都没有,但自己真的想不明白。求大神伸出援手啊~~

藤椅
viavia 学生认证  发表于 2014-7-20 18:29:16
1.ERROR: 数据集 WORK.X 不是以“升序”顺序排序的。当前 BY 组中“b=5”,下一个 BY 组中“b=1”。(by不指定的话默认要按升序)NOTE: 由于出错,SAS 系统停止处理该步。(所以print结果a=6 ,b=1没输出;)

2、3可 看日志文件说明

板凳
何必不淡定。 发表于 2014-8-12 14:40:26
1. by b =by ascending b by default.
2/3.by descending b ;
you must sort your dataset before using the 'by' statement,and the 'descending/ascending' should write before the 'variable'.

报纸
bananacindy 发表于 2014-8-12 23:18:50
何必不淡定。 发表于 2014-8-12 14:40
1. by b =by ascending b by default.
2/3.by descending b ;
you must sort your dataset before using  ...
再次谢谢您~最近看了点书,也慢慢明白这个问题了,发现当时提问的时候真是啥也不懂哈哈

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

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