全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2787 5
2020-09-19
已知一个数据集A,有很多列(62行,37列),如何获取新的37个数据集,这些新的数据集分别取第一列和第二列、第一列和第三列、第一列和第四列,一直下去到最后的第一列和第37列(说明:不能用keep=变量名称的方式获取,因不知道列名,枚举太多了)!!!请大神帮忙,非常感谢
二维码

扫码加我 拉你入群

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

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

全部回复
2020-9-21 17:07:26
keep是肯定要keep的,不存在无法枚举的问题。按dictionary.columns里的varnum把变量名做成list,然后宏循环keep即可。
二维码

扫码加我 拉你入群

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

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

2020-9-21 22:59:35
按照你的规则,37列的原始数据集应该分割为36个小数据集才对,不是37个。

编写程序如下:
复制代码
二维码

扫码加我 拉你入群

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

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

2020-9-21 23:32:03
%Macro subDataset;
%do i=1 %to 37;
Proc sql;
select name into :vname&i
from   dictionary.columns
where  UPCASE(libname)="MYLIB" and UPCASE(memname)="MYDATASET"
    and varnum in (&i);
quit;
%end;
%do j=2 %to 37;
data want&J;
set MYLIB.MYDATASET(keep=&vname1 &&vname&j);
run;
%end;
%mend;
%subDataset;
二维码

扫码加我 拉你入群

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

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

2020-9-24 16:19:26
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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