楼主: yu9954
1366 2

[问答] 如何导出proc freq中产生的某些结果 [推广有奖]

  • 0关注
  • 1粉丝

大专生

73%

还不是VIP/贵宾

-

威望
0
论坛币
820 个
通用积分
2.0765
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
660 点
帖子
35
精华
0
在线时间
50 小时
注册时间
2018-11-22
最后登录
2023-10-23

30论坛币
有如下一段code:

%let frid_list=a06aa a06ab c01aa g04cb g04bd j01db j01ff n02aa n03ae  

n03af n03ax n04ba n04bc n06ab n06ax n06da r01ad r03cc s01la; /*一些药物的代码*/

%let nmedicine=%sysfunc(countw(&frid_list));

%macro medicine;

%do i=1 %to %nmedicine;

%let c=%scan(&frid_list,&i);

%do h=1 to %nmedicine-1;

%let d=%scan(&frid_list,&i+1);

proc freq data=mywork.a1; /*这个数据集里面包含有a06aa a06ab c01aa g04cb g04bd j01db j01ff n02aa n03ae  

n03af n03ax n04ba n04bc n06ab n06ax n06da r01ad r03cc s01la 这些变量,每个变量的值为0或者1,1表示使用过该药物,0表示没有*/

tables &c*&d/list;   /*想找出以上任意两个变量组合的频数*/

quit;

%end;

%end;

%mend medicine;

%medicine;


运行以后得到如下的结果:
IMG_6380.JPG




。。。。。
还有很多结果,因为是任意两个变量组合(一共19个变量),所以结果有19*18=342个组合的list

我想知道怎么把这342个小表格中最后一行,也就是满足两个变量取值都是1(表示同时使用这两种药物)的这个frequency,如29843,3422,4302这些结果输出到另外一个新的数据集中,方便比较大小,了解常见的药物组合。

希望大神们给予指点,万分感谢!!




沙发
yu9954 发表于 2020-5-1 12:12:21 |只看作者 |坛友微信交流群
还是从原来的mywork.a1数据集入手?找出“&c”和“d”同时等于1的obs? 可是还是想知道proc freq的结果如何输出,感谢大神们的关注和解答!

使用道具

藤椅
Cecilia_Xi 在职认证  发表于 2020-5-2 13:16:00 |只看作者 |坛友微信交流群
导出结果至数据集并做条件控制。
  1. proc freq data=sashelp.cars noprint;
  2.         table Make*type/out=a(where=(make='Volvo' and type='Wagon'));
  3. run;
复制代码


使用道具

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

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

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

GMT+8, 2024-5-13 16:09