楼主: intheangel
77437 83

[原创博文] PROC SQL 的一点小结   [推广有奖]

11
intheangel 学生认证  发表于 2014-5-5 17:48:21 |只看作者 |坛友微信交流群
ynaktank 发表于 2014-5-4 08:48
不错啊,楼主的精神真是值得学习,年轻有为。谢谢
年轻不敢当哦~~一夜之间就感觉老了一样~~哎
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
iiooiookoo + 5 + 3 + 3 + 3 精彩帖子

总评分: 论坛币 + 5  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

12
yiqiangz 发表于 2014-5-8 11:10:00 |只看作者 |坛友微信交流群
我有一个关于proc sql的问题,比如下面的操作:

   proc sql noprint;
        select count(distinct name) into:nid from summary;
        select name into :id1-:id%left(&nid) from summary;
   quit;

proc sql会默认对变量名进行排序,最后一个宏变量未必是数据集中的最后一个变量。
请问怎么破?怎么让proc sql不对变量名排序,就按照数据集中的变量的原始位置来,第一个宏变量对第一个变量,最后一个宏变量对最后一个变量。

使用道具

13
intheangel 学生认证  发表于 2014-5-8 13:26:22 |只看作者 |坛友微信交流群
yiqiangz 发表于 2014-5-8 11:10
我有一个关于proc sql的问题,比如下面的操作:

   proc sql noprint;
我大致理解了你的意思,这个真没试过;
你看这样;
  1. select name into: idx separated by ' ' from summary;
  2. %let xx=%scan(&idx,&i,' ');
复制代码
这样得到的宏是按照变量顺序排的么?
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

14
jacky1842 发表于 2014-5-8 14:03:06 |只看作者 |坛友微信交流群
学习了,谢谢。
但是,对于“group by 和where 是不能一起使用的”,好像不是这样吧?


    proc sql noprint;
    create table final as
    select a.* from yourdata a
    , (select id, x1, count(*) as cnt from yourdata group by id, x1 having cnt>1) b
    where a.id=b.id
and a.x1=b.x1
    ;

使用道具

15
intheangel 学生认证  发表于 2014-5-8 14:15:51 |只看作者 |坛友微信交流群
jacky1842 发表于 2014-5-8 14:03
学习了,谢谢。
但是,对于“group by 和where 是不能一起使用的”,好像不是这样吧?
是我写的有点问题,首先where应该是在group by前面的,我个人觉得应该是where与select是合用的,group by应该可以看做是和聚集函数的合用来完成进步一步的筛选;不能一起用的意思是不能通过where来对group by的结果进行筛选
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

16
jacky1842 发表于 2014-5-8 15:41:53 |只看作者 |坛友微信交流群
intheangel 发表于 2014-5-8 14:15
是我写的有点问题,首先where应该是在group by前面的,我个人觉得应该是where与select是合用的,group by ...
多谢指导

使用道具

17
yiqiangz 发表于 2014-5-9 00:14:45 |只看作者 |坛友微信交流群
intheangel 发表于 2014-5-8 13:26
我大致理解了你的意思,这个真没试过;
你看这样;这样得到的宏是按照变量顺序排的么?
看起来这样可以,但是如果变量太多的话,idx太长会报错。

使用道具

18
intheangel 学生认证  发表于 2014-5-9 08:33:55 来自手机 |只看作者 |坛友微信交流群
yiqiangz 发表于 2014-5-9 00:14
看起来这样可以,但是如果变量太多的话,idx太长会报错。
如果数据很多,我觉得大数据时候要把其中一些数据赋值给宏貌似不太必要,关注的应该还是频数之类的统计量
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

19
eric_darcy 发表于 2014-5-10 20:58:54 |只看作者 |坛友微信交流群
感谢楼主分享

使用道具

20
soporaeternus 发表于 2014-5-13 11:14:06 |只看作者 |坛友微信交流群
yiqiangz 发表于 2014-5-8 11:10
我有一个关于proc sql的问题,比如下面的操作:

   proc sql noprint;
sashelp.VCOLUMN 里有个变量是varnum就是变量的顺序
Let them be hard, but never unjust

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 08:26