全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2077 6
2014-12-29
请问大神:proc sql怎么表示类似于data中 set x1-x10的类似表达?
我希望利用这个步骤:
proc sql;
create table test as
select distinct
a.stkcd, a.earning,
b.x1-b.x10,/*问题出在这一步*/
from
        cont.earning as a
          left join
        gfs.contingency as b on a.stkcd=aj.stkcd and a.accperyy=aj.year
order by stkcd;
quit;


结果是:a.stkcd, a.earning都出现在最后的表格test中,而b.x1-b.x10都消失了。
奇葩:log没有报错。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-31 07:06:38
b.x1-b.x10

%do i=1 %to 10; b.x&i., %end;
二维码

扫码加我 拉你入群

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

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

2014-12-31 10:17:53
数据纵向简单叠加用outer union由于set a b;中相同的cloumn被重加到一起了所以要加上corr这个限定,outer union corr可以将a b中所有obs简单纵向叠加并且把相同的column叠加在一起
二维码

扫码加我 拉你入群

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

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

2015-1-1 19:38:54
lqyrendajinji 发表于 2014-12-31 07:06
b.x1-b.x10

%do i=1 %to 10; b.x&i., %end;
回复晚了!抱歉!
请问是要把“  %do i=1 %to 10; b.x&i., %end;  ”加入proc sql语句中,替换"  
b.x1-b.x10  "吗?
二维码

扫码加我 拉你入群

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

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

2015-1-1 19:41:11
星落荒原 发表于 2014-12-31 10:17
数据纵向简单叠加用outer union由于set a b;中相同的cloumn被重加到一起了所以要加上corr这个限定,outer  ...
感谢星落荒原,我这里用的不是纵向叠加,用的是横向合并。把cont.earning和  gfs.contingency两个数据集,用stkcd的标准合并到一起。目前我遇到的问题是,b中存在X1-X10,变量名称很有规律,能不能不写成X1,X2,X3,X4…………X10
二维码

扫码加我 拉你入群

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

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

2015-1-2 03:08:24
SAS 的 variable list(如,x1-x10, name--weight, study: 等)可以在data step, proc step 和数据集的选项中使用. 但不能在 proc sql 中的 select 从句中使用.
这可能是因为 proc sql 中的变量名是用逗号隔开的,而在其它地方变量名是用空格隔开的。

还有, 在proc sql中, 可以用 select 从句作变量之间的计算. x1-x10 会被当作x1减去x10.
在LZ的程序中x1-x10后面没有as将计算的值赋给新的变量.


在LZ的例子中可以用 b.* 代替 b.x1-b.x10 并用 gfs.contingency (drop= var1 var2...) as b 去掉b中不需要的变量.
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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