全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4544 16
2014-02-20
悬赏 200 个论坛币 已解决
复制代码
如何用macro实现?
%aaa(dsin=aaa,
         vars=a1 b1 c1 a2 b2 c2 a3 b3 c3,
         invars=a1 b1 c1,
         keepvars=no,
         dsout=aaa1);
希望得到的数据集
no a1 b1 c1
1 x1 a m
1 z1 b m
1 y1 a f
2 x2 a f
2 y2 a f
3 x3 b f


%aaa(dsin=bbb,
         vars=a1 b1 a2 b2 a3 b3,
         invars=a1 b1,
         keepvars=no,
         dsout=bbb1);


希望得到的数据集
no a1 b1
1 x1 a
1 z1 b
1 y1 a
2 x2 a
2 y2 a
3 x3 b


最佳答案

牵你↗左手 查看完整内容

我根据他的思路写成了宏,输出数据集需要进行处理,删除空值观测,添加format
二维码

扫码加我 拉你入群

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

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

全部回复
2014-2-20 02:26:20
复制代码
我根据他的思路写成了宏,输出数据集需要进行处理,删除空值观测,添加format
二维码

扫码加我 拉你入群

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

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

2014-2-20 09:23:30
我没有用宏,直接用的过程步,我想这个问题的关键是把一个观测拆分成几个观测吧。当然,你要把它改写成宏业是相当简单的啦。希望能解决您的问题。
data aaa1;
set aaa;
keep no a b c;
do;
a=a1;b=b1;c=c1;
output;
end;
do;
a=a2;b=b2;c=c2;
output;
end;
do;
a=a3;b=b3;c=c3;
output;
end;
run;
data aaa1;
set aaa1;
format b b1fmt. c c1fmt.;
if a='' then delete;
run;
二维码

扫码加我 拉你入群

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

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

2014-2-20 09:59:25
为什么不以解决问题为目的呢?我稍微改了下,算是用了宏了吧。
%macro aaa(dsin=aaa,vars=a1 b1 c1 a2 b2 c2 a3 b3 c3,invars=a1 b1 c1,keepvars=no,dsout=aaa1);
data &dsout.;
set &dsin.;
keep &keepvars. a b c;
do;
a=a1;b=b1;c=c1;
output;
end;
do;
a=a2;b=b2;c=c2;
output;
end;
do;
a=a3;b=b3;c=c3;
output;
end;
run;
data &dsout.;
set &dsout.;
format b b1fmt. c c1fmt.;
if a='' then delete;
run;
%mend aaa;
%aaa;
二维码

扫码加我 拉你入群

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

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

2014-2-20 10:17:12
weitingkoala 发表于 2014-2-20 09:59
为什么不以解决问题为目的呢?我稍微改了下,算是用了宏了吧。
%macro aaa(dsin=aaa,vars=a1 b1 c1 a2 b2  ...
不通用啊!
二维码

扫码加我 拉你入群

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

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

2014-2-20 10:24:10
dxystata 发表于 2014-2-20 10:17
不通用啊!
好吧
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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