楼主: lindalmx
1824 3

put函数中的format [推广有奖]

  • 0关注
  • 0粉丝

高中生

20%

还不是VIP/贵宾

-

威望
0
论坛币
12 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
144 点
帖子
6
精华
0
在线时间
45 小时
注册时间
2008-7-7
最后登录
2021-7-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请高手帮我看看,为什么try1数据库中的level不能正确的format? 但如果我将原数据库中的0都转换为2,则能正确的format.为什么?
  1. data try;
  2. input a$ b c d e;
  3. cards;
  4. 男 1 0 1 1
  5. 男 1 0 0 0
  6. 女 0 1 0 0
  7. 男 1 1 0 1
  8. ;
  9. run;
  10. proc format;
  11. value b
  12. 1='多'
  13. 0='少';
  14. value c
  15. 1='有'
  16. 0='无';
  17. value d
  18. 1='有'
  19. 0='无';
  20. value e
  21. 1='是'
  22. 0='否';
  23. run;
  24. %let group=a;
  25. %let cat_var=b c d e;
  26. %let CAT_n=4;
  27. %macro x;
  28. ods output CROSSTABFREQS = try_FREQS;
  29. proc freq data=try;
  30. table &group.*(&cat_var.)/ nopercent nocum nocol;
  31. run;
  32. %mend;
  33. %x;
  34. %macro y;
  35. data try1;
  36. set try_FREQS;;
  37. length level $20.;
  38. variable=scan(table,-1,"");
  39.          %DO i=1 %TO &CAT_n;
  40.            IF %SCAN(&Cat_var,&i) THEN DO;
  41. if variable="%SCAN(&Cat_var,&i)" then
  42. level=PUT(%SCAN(&Cat_var,&i),$%SCAN(&Cat_var,&i).);
  43. end;
  44. %end;
  45. run;
  46. %mend;
  47. %y;
复制代码

二维码

扫码加我 拉你入群

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

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

关键词:format FORMA put函数 form For measures 数据库

沙发
lindalmx 发表于 2014-12-20 19:07:29 |只看作者 |坛友微信交流群

使用道具

藤椅
jl60156 发表于 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;

使用道具

板凳
teqel 发表于 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)

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-24 19:13