全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1904 5
2009-10-29
我有两个数据集

数据集a为:
1
2
3
4



数据集b为
a1
a3
b4
c2



需要生成一个新的数据集c为
a1
a2
a3
a4
b1
b2
b3
b4
c1
c2
c3
c4



需要生成一个新的数据集d为
a1
a0
a3
a0
b0
b0
b0
b4
c0
c2
c0
c0


请问如何生成两个新的数据集c和d。非常感谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2009-10-29 15:18:58
我也想知道啊,兄台!
二维码

扫码加我 拉你入群

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

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

2009-10-29 17:26:35
各位高手请指教,多谢!
二维码

扫码加我 拉你入群

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

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

2009-10-29 18:18:13
data a;
input x@@;
cards;
1 2 3 4
;run;
data b;
input y1$ y2@@;
cards;
a 1
a 3
b 4
c 2
;run;
proc sort  data=b;by y2;run;
proc sql noprint;
select count(distinct(y1))  into: n from b;
quit;data tmp1; do i=1 to &n ; output;  end;run;
proc sql noprint;
create table tmp2 as select distinct y1 from b;
create table c as select * from tmp2,a;
create table tmp0 as select * from b,tmp1;
;quit;
data tmp3;set tmp0;drop i;rename y1=y3;run;
data tmp4;merge c tmp3;run;
data d;set tmp4;if y1=y3 then z=x;else z=0;keep z y1;run;
二维码

扫码加我 拉你入群

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

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

2009-10-30 01:26:35
data a;
input x;
cards;
1
2
3
4
;
run;
data b;
input y$ x;
cards;
a 1
a 3
b 4
c 2
;
run;
proc sql;
create table temp as
select distinct y from b;
create table c as
select * from temp cross join a;
create table d as
select c.y,max(b.x,0) as x
from c left join b on c.y=b.y and c.x=b.x;
quit;
二维码

扫码加我 拉你入群

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

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

2009-10-30 09:54:11
相当精彩
david0 发表于 2009-10-30 01:26
data a;
input x;
cards;
1
2
3
4
;
run;
data b;
input y$ x;
cards;
a 1
a 3
b 4
c 2
;
run;
proc sql;
create table temp as
select distinct y from b;
create table c as
select * from temp cross join a;
create table d as
select c.y,max(b.x,0) as x
from c left join b on c.y=b.y and c.x=b.x;
quit;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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