楼主: cinaiyimu
1143 3

[其他] sas 数据集名字批量添加到每个数据集中形成新的变量和数据集 [推广有奖]

  • 4关注
  • 0粉丝

硕士生

25%

还不是VIP/贵宾

-

威望
0
论坛币
881 个
通用积分
29.0613
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
1430 点
帖子
69
精华
0
在线时间
183 小时
注册时间
2016-6-8
最后登录
2023-5-23

50论坛币
希望能在每个数据集中增加一个新的变量,变量内容是该数据集的名字。已经用proc contents 把library里所有数据集的名字搞到一个新数据集里了,也将这些数据集名称赋给宏变量。但是后面怎么批量添加到每个数据集中,形成新的数据集,没能实现。希望大神能用宏程序帮忙实现,非常感谢!





最佳答案

绣球 查看完整内容

我看下来,你是不是想给逻辑库里的一批数据集增加一个字段,值是该数据集的名称? 下面我举了一个例子来实现这个想法,希望对你有帮助 /**获取所有WORK逻辑库里所有数据集的名称**/ proc sql; create table tablename as select memname from dictionary.tables/*dictionary.tables是SAS数据字典表,固定用法*/ where libname eq "WORK";/*填写逻辑库名*/ QUIT; data tablename; set tablename; call symput ('numvar ...
关键词:数据集 contents Content Library BRARY sas 宏程序 循环 数据集整理 添加变量
沙发
绣球 发表于 2021-7-13 16:49:09 |只看作者 |坛友微信交流群
我看下来,你是不是想给逻辑库里的一批数据集增加一个字段,值是该数据集的名称?
下面我举了一个例子来实现这个想法,希望对你有帮助
/**获取所有WORK逻辑库里所有数据集的名称**/
proc sql;
create table tablename as
select memname from dictionary.tables/*dictionary.tables是SAS数据字典表,固定用法*/
where libname eq "WORK";/*填写逻辑库名*/
QUIT;

data tablename;
set tablename;
call symput ('numvars',_n_);run;/*获取数据集的数量*/

%macro datesetname;
%do i=1 %to &numvars.;
data _null_;
set tablename;
if _n_=&i.;
call symput ('dname',memname);run;/*按顺序读取数据集的名称**/

data &dname.;
set &dname.;
format datesetname $20.;
datesetname="&dname.";/**添加一个字段,值为数据集名称*/
run;
%end;
%mend;

%datesetname;
已有 1 人评分论坛币 收起 理由
giresse + 30 精彩帖子

总评分: 论坛币 + 30   查看全部评分

使用道具

藤椅
cinaiyimu 发表于 2021-7-13 18:20:57 |只看作者 |坛友微信交流群
自己写了一个,P1-P3是原有数据集的名字,
%let numvars=%str(P1|P2|P3|);
%let nvars=%sysfunc(countw(&numvars,"|"));

%macro addsetname (nvars,numvars);
%do i=1 %to &nvars;
   %let numvar&i=%scan(&numvars,&i,"|");

    data &&numvar&i;
    set &&numvar&i;
        datasetname="&&numvar&i";
run;
%end;
%mend;

%addsetname(nvars=&nvars,numvars=&numvars)

使用道具

板凳
cinaiyimu 发表于 2021-7-26 12:10:40 |只看作者 |坛友微信交流群
绣球 发表于 2021-7-13 16:49
我看下来,你是不是想给逻辑库里的一批数据集增加一个字段,值是该数据集的名称?
下面我举了一个例子来实 ...
就是这个意思呢,谢谢~~~

使用道具

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

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-21 04:43