楼主: kongqunyu
8761 5

[有偿编程] SAS修改数据表名称 [推广有奖]

  • 10关注
  • 2粉丝

副教授

37%

还不是VIP/贵宾

-

威望
0
论坛币
2977 个
通用积分
0.4469
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
14735 点
帖子
183
精华
0
在线时间
1274 小时
注册时间
2008-7-16
最后登录
2019-1-7

10论坛币



如图,有filenames表两列:tmp为现在的表名,memname为目标表名,
把这个库里面的tmp1,tmp2,tmp3……tmp9 批量的修改为对应的memname的表名,不要.xls这个符号,很有规律,如何实现呢? 谢谢。

图片.PNG (42.85 KB)

如图

如图

关键词:修改数据 数据表 filename Names name 数据表 如何
沙发
yongyitian 发表于 2014-4-2 11:48:49 |只看作者 |坛友微信交流群
  1. data _null_;
  2.      set filenames;
  3.      newname= scan(rename, 1);
  4.      call execute('Proc Datasets Lib=work;');
  5.      call execute(catx(' ', "change", tmp, "=", newname, ";" , "quit;"));
  6. run;
复制代码

使用道具

藤椅
kongqunyu 发表于 2014-4-2 12:40:29 |只看作者 |坛友微信交流群
yongyitian 发表于 2014-4-2 12:22
把上述文件名的中文变为英文/拼音后,运行:

174  data _null_;
175       set filenames;
176       newname= scan(rename, 1);
177       call execute('Proc Datasets Lib=work;');
178       call execute(catx(' ', "change", tmp, "=", newname, ";" , "quit;"));
179  run;

NOTE: 数值已转换为字符值,位置:(行:列)。
      176:20
NOTE: 变量 rename 未初始化。
NOTE: 从数据集 WORK.FILENAMES. 读取了 10 个观测
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒


NOTE: CALL EXECUTE 生成了代码行。
1   + Proc Datasets Lib=work;
NOTE: CALL EXECUTE 例程生成的行。
2   + change tmp1 = ; quit;
                    -
                    22
NOTE: 输入 RUN; 继续,或输入 QUIT; 结束过程。

ERROR 22-322: 期望: 名称.

NOTE: 由于上述错误,没有处理语句。
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “PROCEDURE DATASETS”所用时间(总处理时间):
      实际时间          0.15 秒
      CPU 时间          0.03 秒

使用道具

板凳
kongqunyu 发表于 2014-4-2 13:46:34 |只看作者 |坛友微信交流群
yongyitian 发表于 2014-4-2 11:48
相当好

使用道具

报纸
rollery 在职认证  发表于 2014-4-2 13:50:54 |只看作者 |坛友微信交流群
options mprint mlogic;
%macro rename();
data _null_;
        set filenames end=eof;
        call symput("chg_nm"||trim(left(_n_)),tmp||"="||memname);
        if eof then call symput("n",_n_);
run;
%do i=1 %to &n.;
proc datasets library=work memtype=data nolist;
change &chg_nm.;
run;
%end;
%mend;

%rename();
从统计学角度看,现实生活只是我们人生的一次样本实现。

使用道具

地板
rollery 在职认证  发表于 2014-4-2 14:03:43 |只看作者 |坛友微信交流群
  1. 或者
  2. proc sql noprint;
  3. select compress(tmp||"="||memname) into : chg_nm separated by " "
  4. from filenames;
  5. quit;

  6. proc datasets library=work memtype=data nolist;
  7. change &chg_nm.;
  8. run;
复制代码
从统计学角度看,现实生活只是我们人生的一次样本实现。

使用道具

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

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

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

GMT+8, 2024-4-28 21:21