楼主: qinglingnvhai
3708 9

如何合并多个命名无规律的数据集 [推广有奖]

  • 0关注
  • 0粉丝

大专生

98%

还不是VIP/贵宾

-

威望
0
论坛币
13 个
通用积分
0.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
695 点
帖子
41
精华
0
在线时间
55 小时
注册时间
2011-12-19
最后登录
2016-9-3

楼主
qinglingnvhai 发表于 2012-10-16 18:06:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我在帖子里看到过用set a001-a500,但是我的数据集命名无规律,没有办法用这个方法,不知各位大侠有没有什么方法?
二维码

扫码加我 拉你入群

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

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

关键词:命名无规律 数据集 什么方法 各位大侠 Set 命名 如何

回帖推荐

yuerqieqie 发表于2楼  查看完整内容

这些datasets在同一lib下面么?这个lib下面还有别的不需要的数据么? 如果所有需要的datasets在同一lib下面,比如在libname raw下面,且这个raw下面只有你需要合并的数据的话。可以先用下面的code得到所有的数据名,然后再付给macro variable最后调用这些macro variables来合并数据

本帖被以下文库推荐

沙发
yuerqieqie 发表于 2012-10-17 20:56:36
这些datasets在同一lib下面么?这个lib下面还有别的不需要的数据么?
如果所有需要的datasets在同一lib下面,比如在libname raw下面,且这个raw下面只有你需要合并的数据的话。可以先用下面的code得到所有的数据名,
  1.         proc sql;
  2.                 create table dsn as
  3.                 select memname
  4.                 from dictionary.tables
  5.                 where lowcase(libname) = "raw"
  6.                 and lowcase(memtype) = "data";
  7.         quit;
复制代码
然后再付给macro variable
  1.         data _null_;
  2.                 set dsn end = eof;
  3.                 call symput(compress("dataName"||_n_), memname);
  4.                 if (eof) then call symput('N_data', compress(_n_));
  5.         run;
复制代码
最后调用这些macro variables来合并数据
  1.         %macro CombineData();
  2.         data out;
  3.                 set %do i = 1 %to &N_data;
  4.                         raw.&&dataName&i
  5.                 %end;;
  6.         run;
  7.         %mend;
  8.         %CombineData()
复制代码
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
qinglingnvhai 发表于 2012-10-23 11:05:24
yuerqieqie 发表于 2012-10-17 20:56
这些datasets在同一lib下面么?这个lib下面还有别的不需要的数据么?
如果所有需要的datasets在同一lib下面 ...
谢谢你的解答,我试过了,可以的!不过
set %do i = 1 %to &N_data;
  raw.&&dataName&i
%end;;
我不是很懂,能帮我解答一下吗?

板凳
wodemac 发表于 2012-10-23 13:06:14
这段很高级

报纸
xulimei1986 发表于 2012-10-23 13:16:57
学习下!
家家有本难念的经,计较的少一点,会和睦许多!!

地板
wodemac 发表于 2012-10-23 13:20:25
qinglingnvhai 发表于 2012-10-23 11:05
谢谢你的解答,我试过了,可以的!不过
set %do i = 1 %to &N_data;
  raw.&&dataName&i
这一段具体含义可否解释一下,谢谢!

7
yuerqieqie 发表于 2012-10-23 20:45:14
qinglingnvhai 发表于 2012-10-23 11:05
谢谢你的解答,我试过了,可以的!不过
set %do i = 1 %to &N_data;
  raw.&&dataName&i
首先在data _null_ step将raw这个library下面的datasets个数赋给了macro variable: N_data;并且将datasets name依次赋给macro variables: dataName1, dataName2,....直到dataName&N_data.

在合并数据的那段程序中,
set %do i = 1 %to &N_data;
  raw.&&dataName&i %end;;
SAS 在运行前会先将这段macro解释出来。
第一步,变成 set &dataName1 &dataName2 &dataName3 ... ;
第二步,在去找macro variables: dataName1, dataName2...所获得的值。

8
蓝_23 发表于 2016-8-16 12:05:09
yuerqieqie 发表于 2012-10-17 20:56
这些datasets在同一lib下面么?这个lib下面还有别的不需要的数据么?
如果所有需要的datasets在同一lib下面 ...
你好,用什么代码编辑器,这样显示代码,方便他人或自己重复使用,谢谢

9
prince315 在职认证  发表于 2016-8-19 10:51:53
yuerqieqie 发表于 2012-10-17 20:56
这些datasets在同一lib下面么?这个lib下面还有别的不需要的数据么?
如果所有需要的datasets在同一lib下面 ...
很帅气的做法,精髓在dictionary.tables的使用,同理可用sashelp.vtable

10
macheal123 发表于 2016-8-28 11:12:58
学习了。。谢了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 09:50