请选择 进入手机版 | 继续访问电脑版
楼主: wanwanle2
3314 7

[问答] 在宏的data步中用宏变量修改数据集变量 [推广有奖]

  • 1关注
  • 22粉丝

博士生

87%

还不是VIP/贵宾

-

威望
0
论坛币
323 个
通用积分
294.6629
学术水平
16 点
热心指数
18 点
信用等级
14 点
经验
286983 点
帖子
307
精华
0
在线时间
369 小时
注册时间
2011-4-13
最后登录
2022-8-1

wanwanle2 在职认证  发表于 2018-1-4 14:21:38 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
批量处理文件夹中的SAS数据集,并批量修改变量名,由于一个数据表中变量有多个,要在变量名中加上文件名来区别。结果发生了错误。下面是经过。请高手解答。
1.jpg
2.jpg
3.jpg

二维码

扫码加我 拉你入群

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

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

关键词:data步 数据集变量 修改数据 Data 数据集

l1i2n3i4n5g 在职认证  发表于 2018-1-4 14:40:42 |显示全部楼层 |坛友微信交流群
首先调用宏程序后面不需要加分号
其次可以在调用前使用options mprint;用来检查错误

使用道具

wanwanle2 在职认证  发表于 2018-1-4 14:45:26 |显示全部楼层 |坛友微信交流群
加过之后,出现下面信息。从【MPRINT(RENAMEV2):   rename _COL1 = open_zn11;】这里可以看出,宏变量确实完成了rename,但是就是写不进去数据集中。


"序列"= 286
"文件名"= zn11
open = ozn11
MPRINT(RENAMEV2):   data zn11;
MPRINT(RENAMEV2):   Set WFuture.zn11;
MPRINT(RENAMEV2):   rename _COL0 = date;
NOTE 137-205: 由调用宏“RENAMEV2”生成行。
575            data &name.;         Set WFuture.&name.;         rename _COL0 = date;         rename
575 !  _COL1 = open_&name.;         run;
                          -
                          22
ERROR 22-322: 语法错误,期望下列之一: -, :, =.

NOTE: 由调用宏“RENAMEV2”生成行。
575            data &name.;         Set WFuture.&name.;         rename _COL0 = date;         rename
575 !  _COL1 = open_&name.;         run;
                          -
                          76
ERROR 76-322: 语法错误,语句将被忽略。

MPRINT(RENAMEV2):   rename _COL1 = open_zn11;
MPRINT(RENAMEV2):   run;

NOTE: 由于出错,SAS 系统停止处理该步。
WARNING: 数据集 WORK.ZN11 可能不完整。该步停止时,共有 0 个观测和 9 个变量。
WARNING: 数据集 WORK.ZN11 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.03 秒
      CPU 时间          0.04 秒

使用道具

l1i2n3i4n5g 在职认证  发表于 2018-1-4 15:00:23 |显示全部楼层 |坛友微信交流群
感觉程序没问题,SAS重启试试看吧

使用道具

wanwanle2 在职认证  发表于 2018-1-4 15:08:11 |显示全部楼层 |坛友微信交流群
谢谢!

使用道具

谢谢分享

使用道具


&name.  字符串前面产生空格了,
如下解决方法:
open_%sysfunc(strip(&name.));

使用道具

wanwanle2 在职认证  发表于 2018-1-5 09:28:10 |显示全部楼层 |坛友微信交流群
流水不朽 发表于 2018-1-5 09:18
&name.  字符串前面产生空格了,
如下解决方法:
open_%sysfunc(strip(&name.));
谢谢!修改后问题解决了。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-3-29 20:52