全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3822 10
2019-03-19
悬赏 15 个论坛币 已解决
复制代码

先根据程序自动得到数据集aaa中x的小数点位数,结果是4,再将其放入宏变量。
程序如何实现?

最佳答案

l1i2n3i4n5g 查看完整内容

proc sql; select max(length(scan(put(x,best12.),2))) into : result from aaa; quit;
二维码

扫码加我 拉你入群

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

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

全部回复
2019-3-19 07:15:50
proc sql;
   select max(length(scan(put(x,best12.),2))) into : result
   from aaa;
quit;
二维码

扫码加我 拉你入群

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

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

2019-3-19 08:40:05
data aaa;
input x;
cards;
1
1.1
2.22
3.1415
13.141
110.1
;
run;
data bbb;
        set aaa;
        y=int(x);
        if x=y then z=0;
        else z=sum(length(compress(int(x))),1);
run;
得到小数点的位置,但是不太明白,放入宏变量是什么意思。
data _null_;
        set bbb;
        call execute('%test('||z||')');
run;
是需要这样吗?
二维码

扫码加我 拉你入群

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

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

2019-3-19 08:51:55
zy_4613 发表于 2019-3-19 08:40
data aaa;
input x;
cards;
我希望找出变量取值中小数点位数最多的位数是多少
二维码

扫码加我 拉你入群

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

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

2019-3-19 09:08:56
dxystata 发表于 2019-3-19 08:51
我希望找出变量取值中小数点位数最多的位数是多少
data aaa;
input x;
cards;
1
1.1
2.22
3.1415
13.141
110.1
;
run;
data bbb;
        set aaa;
        y=sum(x,-int(x));
        z=sum(length(compress(y)),-2);
run;
proc sql;
        select max(z) into: macro_name from bbb;
quit;
第一次弄错了
二维码

扫码加我 拉你入群

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

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

2019-3-19 10:16:19
l1i2n3i4n5g 发表于 2019-3-19 09:33
proc sql;
   select max(length(scan(put(x,best12.),2))) into : result
   from aaa;
proc sql;
   select max(length(scan(x,2, "."))) into : result
   from aaa;
quit;
反正SAS会在数字和字符自动转换
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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