全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3211 14
2013-12-15
悬赏 50 个论坛币 未解决
复制代码
如何使数据集保留字符变量的最长长度?比如: x的长度为3,y的长度为18.
数据集很多,如何批量实现?谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2013-12-15 12:16:44
/*just for reference*/
data a;
length x $20. y$20.;
input x$ y$;
cards;
a b
aaa bbbbbbbbbbbbbbbbbb
;
run;

%macro maxlen(lib=,mem=,out=);
proc sql noprint;
        select name into: varlist separated by ' '
        from dictionary.columns
        where libname=%upcase("&lib.") and memname=%upcase("&mem.");
quit;

%let nvar=%sysfunc(countw(&varList));

%let varlast=%scan(&varList, &nvar.);

proc sql;
        create table &out. as
        select
                 %do i =1 %to %eval(&nvar.-1);
                             %let var =%scan(&varList, &i);
                                        max(length(&var.)) as &var.len,
                 %end;

          max(length(&varlast.)) as  &varlast.len
        from a;
quit;
%mend maxlen;

%maxlen(lib=work,mem=a,out=test)
二维码

扫码加我 拉你入群

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

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

2013-12-15 12:39:45
Eternal0601 发表于 2013-12-15 12:16
/*just for reference*/
data a;
length x $20. y$20.;
你误会我的意思啦,我希望得到的数据集变量x的长度为3,y的变量长度为18。
proc contents data=a;
run;
                                 #    变量    类型    长度

                                    1    x       字符      3
                                    2    y       字符      18
二维码

扫码加我 拉你入群

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

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

2013-12-15 12:47:50
dxystata 发表于 2013-12-15 12:39
你误会我的意思啦,我希望得到的数据集变量x的长度为3,y的变量长度为18。
proc contents data=a;
run; ...
哈哈,感觉直接在data-input-cards中实现不了,但可以先定义一个大长度,然后再改属性
二维码

扫码加我 拉你入群

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

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

2013-12-16 10:29:54
继续求助!
二维码

扫码加我 拉你入群

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

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

2013-12-16 10:47:49
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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