全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
11464 8
2014-05-16
我有以下两个数据集:
data a1;
input var1 var2 $;
cards;
1 xxx
2 yyy
2 zzz
2 aaa
;
run;

data a2;
input var1 var3 $;
cards;
1 bbb
1 ccc
1 ddd
1 eee
2 fff
2 ggg
2 ITT
;
run;

请问如何在SAS SQL过程中只用一条SAS SQL语句实现a1\a2的横向合并数据集a3:
a3要求如下:
var1var2var3

1

xxxbbb

1

ccc

1

ddd

1

eee

2

yyyfff

2

zzzggg

2

aaaITT

二维码

扫码加我 拉你入群

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

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

全部回复
2014-5-16 11:23:11
复制代码
二维码

扫码加我 拉你入群

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

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

2014-5-16 11:35:11
mingfeng07 发表于 2014-5-16 11:23
你好,非常感谢!
这个方法是可以实现,但如果直接在SQL语句中直接衍生出变量sum(不要在data步中衍生),可以做到吗?
二维码

扫码加我 拉你入群

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

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

2014-5-16 11:56:02
920240553 发表于 2014-5-16 11:35
你好,非常感谢!
这个方法是可以实现,但如果直接在SQL语句中直接衍生出变量sum(不要在data步中衍生) ...
据我了解应该不可以,想要得到新的满足要求的sum变量,首先需要排序,而这个排序则需要通过sort过程来完成,SQL过程貌似做不到通过排序来利用逻辑运算符来满足要求。当然也有可能是我水平有限,了解还不够,也许能实现也不一定。
二维码

扫码加我 拉你入群

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

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

2014-5-16 13:38:07
mingfeng07 发表于 2014-5-16 11:56
据我了解应该不可以,想要得到新的满足要求的sum变量,首先需要排序,而这个排序则需要通过sort过程来完成 ...
OK,非常感谢!
如果你什么时候实现了,记得上传上来以供学习。
二维码

扫码加我 拉你入群

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

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

2014-5-16 22:44:36
办得到, 跟m的方法是一样的. 但也许分开写比较清楚.

proc sql;
create table xx as
select b.var1, a.var2, b.var3
from (select *, monotonic() as ord, (calculated ord-min(calculated ord)) as ord2  from a1 group by var1) as a right join (select *, monotonic() as  ord, (calculated ord-min(calculated ord)) as ord2 from a2 group by var1) as b
on  a.var1=b.var1 & a.ord2 =b.ord2;


---debug

proc sql;
create table  zz as
select *, monotonic() as ord, (calculated ord-min(calculated ord)) as ord2  from a1 group by var1;

proc sql;
create table  zz2 as
select *, monotonic() as ord, (calculated ord-min(calculated ord)) as ord2  from a2 group by var1;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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