全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5827 2
2014-11-27
我有两个数据集,一个标准集一个测试集。里面的变量名是一样的,但是有几个变量的类型不一样,现在想追加成一个数据集,set时日志提醒“xx变量已被定义为数值型与字符型”。我想以标准集中的变量格式为标准来定义测试集中的变量。我写了一个宏,但是在测试集运行后变量的类型没有发生改变,为什么?

/******将标准集中的变量类型输出**************/proc contents data=Biaozhun out=summary(keep=name type format);
run;

proc sql noprint;
        select count(distinct name) into :amount
                from summary;
quit;

proc sql noprint;
        select distinct name into :name1-:name%left(&amount)
                from summary;
        select type into :type1-:type%left(&amount)
                from summary;
        select format into :format1-:format%left(&amount)
                from summary;
quit;

%macro new;
        %global fmt;
        %let fmt=;
        %do i=1 %to &amount;
                /*分类型定义变量格式:数值型、日期型、文本型*/
                %if &&type&i=1 and &&format&i=%str() %then %do;
                        %let new=%str(&&name&i=&&name&i*1;);
                %end;

                %if &&type&i=1 and %sysfunc(compress(&&format&i))=%str(DATE) %then %do;
                        %let new=%str(&&name&i=input(&&name&i,MMDDYY10.););
                %end;

                %if &&type&i=2 %then %do;
                        %let new=%str(&&name&i=put(&&name&i,$60.););
                %end;

                /*将所有变量的转换格式赋值给全局宏变量fmt*/
                %let fmt=&fmt %str(&new);
        %end;
%mend;

%new;

data Ceshi;
        set Ceshi;
        &fmt;/*定义测试集中的变量格式*/
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2014-11-27 21:59:32
求大牛帮忙解决数据集合并时变量类型不一致的问题,不限思路啊!万分感谢!
二维码

扫码加我 拉你入群

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

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

2018-10-10 14:20:56
数值型直接put成字符型然后再合并?
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群