全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1266 4
2014-03-10
首先我有一个变量为数字变量。
data test;
x=121122;
run;
然后我想计算x里1的个数,并表示为一个宏变量。
然后我想把出现1的每个位置也表示成几个宏变量。

这个code怎么写。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-3-10 19:15:31
数字符出现的位数一直是我想知道的。但是我找不到对应的函数。正则表达式也许能实现,但是我不会。
复制代码
二维码

扫码加我 拉你入群

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

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

2014-3-10 19:58:59
nomad5 发表于 2014-3-10 19:15
数字符出现的位数一直是我想知道的。但是我找不到对应的函数。正则表达式也许能实现,但是我不会。
多谢。不过不是很符合我的想法。我再思考思考,如果有结果我告诉你
二维码

扫码加我 拉你入群

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

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

2014-3-10 20:31:38

%macro a(x);
data a;
do i=1 to 100;
y=substr("&x",i,1);
if y^=. then n+1;
if y=. then leave;
end;
call symput('num',n);
run;
%put #  /*算出数字有几位并赋值给宏变量num*/

data b;
do i=1 to #
y=substr("&x",i,1);
if y='1' then do;
n+1;
output;/*i为数字中哪几位是数字1*/
end;
if y=. then leave;
end;
call symput('num_1',n);
run;
%put &num_1;/*算出数字中有几个1并赋值给宏变量num_1*/

%do j=1 %to &num_1;
data c;
set b;
if _n_=&j;

data d;
set c;
call symput("num_1_&j",i);
run;
%put &&num_1_&j;/*输出数字中1所在的位置,这个变量应该输出1,2,5,同时把这3个值赋值宏变量num_1_1 num_1_2 num_1_3*/
%end;
run;

%mend a;

%a(112012131);

二维码

扫码加我 拉你入群

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

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

2014-3-10 20:41:40
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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