[繁体中文]             |

赛壶艺术

头部广告

版块导航

资讯
热点信息展赛资讯
烟壶
烟壶光韵内画艺术烟壶文化烟壶知识藏友交流内画点评
名家
大师专栏内画名家艺术机构赛壶展厅
书画
绘画艺术书法集萃金石篆刻诗词文赋
文玩
古玩收藏当代艺术
生活
衣食住行摄影采风海阔天空中华传统
站务
公告信息意见建议议事厅回收站

变量名包含小数点符号(句点.号)的sas数据集怎样导出到文本或者excel(sas数据集变量名批量修改)

[Copy link]
Post time 2020-2-21 21:05:51 | Show all posts |Read mode

    大家有没有碰到过sas数据集因为变量名中包含了小数点符号,而无法导出的情况呢?    这里提供一段sas代码,完美解决了这个问题,其实就是通过对sas数据集变量名进行批量修改实现。

    代码很简短,不多做解释:

%macro renfileds(ds=,prefix=);
/*
宏  :%renfileds(ds=,prefix=);
功能:SAS 数据集变量名改名,如包含小数点,则去掉第一个小数点.及其之前的内容,将其他的小数点.替换为下划线_,  以便支持文本导出。
         同时可以给变量名增加统一前缀&prefix。
参数:
        ds: 数据集名称
        prefix: 新变量名前缀
步骤:
        获得数据集ds的所有变量。
        逐一变量改名。
入口:调用点在代码最后。
联系:建议意见可在此贴回复或联系微信 daijp1971
*/
%if %length(%sysfunc(compress("&ds.","."))) ne %length(%sysfunc(compress("&ds.","")))
%then
        %do;
                %let libname=%scan("&ds.",1,".");
                %let memname=%scan("&ds.",2,".");
        %end;
%else
        %do;
                %let libname=WORK;
                %let memname=&ds.;
        %end;

proc sql noprint;
select name into :fieldnames separated by ' '
  from dictionary.columns where libname=upcase("&libname") and memname=upcase("&memname") order by varnum;
quit;

data &ds;
set &ds;
%let re=%sysfunc(prxparse(s/^.*\.//));
%local i;
%let i=1;
%do %until (%scan(&fieldnames.,&i.," ")=);
  %let oldname=%sysfunc(compress(%scan("&fieldnames",&i," ")));
        %let newname=%sysfunc(prxchange(&re,-1,&oldname));
        %let newname=%sysfunc(tranwrd(&newname,.,_));

        %let cmd=%unquote(rename %str(%')&oldname.%str(%')n=%str(%')&prefix.&newname.%str(%')n%str(;));
        &cmd
        
  %let i=%eval(&i.+1);
%end;
run;
%mend;

/* ---------------------------------功能调用点------------------------------- */
%renfileds( ds=test, prefix=pre_ );
完毕!
sas.jpg






Reply

Use magic Report

使用高级回帖 (可批量传图、插入视频等)快速回复

You have to log in before you can reply Login | 立即加入

Points Rules   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
返回顶部快速回复上一主题下一主题返回列表QQ交流群手机访问

  

     
您需要 登录 后才可以回复,没有帐号?立即注册 使用QQ帐号登录
高级模式QQ反馈
快讯
Quick Reply To Top Return to the list