全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1982 3
2014-12-20
请高手帮我看看,为什么try1数据库中的level不能正确的format? 但如果我将原数据库中的0都转换为2,则能正确的format.为什么?
复制代码

二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-20 19:07:29
二维码

扫码加我 拉你入群

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

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

2014-12-21 07:32:26
data try;
input a$ b c dd ee;
cards;
男 1 0 1 1
男 1 0 0 0
女 0 1 0 0
男 1 1 0 1
;
run;
proc format;
value b
1='多'
0='少';
value c
1='有'
0='无';
value dd
1='有'
0='无';
value ee
1='是'
0='否';
run;
%let group=a;
%let cat_var=b c dd ee;
%let CAT_n=4;
%macro x;
ods output CROSSTABFREQS = try_FREQS;
proc freq data=try;
table &group.*(&cat_var.)/nopercent nocum nocol;
run;
%mend;
%x;
%macro y;
data try1;
set try_FREQS;;
length level $20.;
variable=scan(table,-1,"");
        %DO i=1 %TO &CAT_n;
ifvariable="%SCAN(&Cat_var,&i)" then do;
level=PUT(%SCAN(&Cat_var,&i),$%SCAN(&Cat_var,&i).);
end;
%end;
二维码

扫码加我 拉你入群

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

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

2014-12-21 09:29:40
level=PUT(%SCAN(&Cat_var,&i),$%SCAN(&Cat_var,&i).);
你这句翻译过来就是

level=PUT(0, $0.);

当然不行

关键是%SCAN(&Cat_var,&i)=b=0 (or 1)
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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