全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1407 7
2020-06-03
悬赏 30 个论坛币 已解决

我有一个数据集,也是用unique study ID表示每一个人,每一个人有一行自己的观测值,变量为这个人使用过的所有药物,共有300多个不同的表示药物的变量,使用过该药物的,变量赋值为“1”,没有使用过的赋值为“0”,有大约100万个observation, 想从其中找出这些人群中常用的药物的组合(药物任意两种,三种,四种,五种的组合),找出这些组合的频数。

数据集节选如下:
N02aa。。。。这些变量表示不同的药物名,左边的数字表示这些人的study ID

想找出比如n02aa和n02ab(两种)同时都为1的有多少个人,或者n02aa n02ab n02ae(三种)同时都为1的有多少个人

求大神们指点!万分感谢!

Screen Shot 2020-06-02 at 5.40.48 PM.png

最佳答案

jg.sas 查看完整内容

data a; input subjid 字符4. n02aa n02ab n02ae; cards; 1154 1 0 1 1155 1 1 1 1156 1 0 0 1157 0 1 0 1158 1 1 0 1159 1 1 1 1160 1 1 1 ; run; data bb; length all $32766; set a; /* all="";*/ array num _numeric_; do over num; /* if num=1 then all=cats(vlabel(num),all);*/ all=cats(vval ...
二维码

扫码加我 拉你入群

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

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

全部回复
2020-6-3 05:45:23
data a;
input subjid 字符4.   n02aa n02ab n02ae;
cards;
1154 1   0   1
1155 1   1   1
1156 1   0   0
1157 0   1   0
1158 1   1   0
1159 1   1   1
1160 1   1   1
;
run;

data bb;
        length all $32766;
        set a;
/*        all="";*/
        array num _numeric_;
        do over num;
/*                if num=1 then all=cats(vlabel(num),all);*/
                all=cats(vvalue(num),all);
        end;
run;

proc freq data=bb;
        table all/out=cc;
run;
二维码

扫码加我 拉你入群

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

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

2020-6-4 11:50:30
data a;
input subjid   n02aa n02ab n02ae;
cards;
1154 1   0   1
1155 1   1   1
1156 1   0   0
1157 0   1   0
1158 1   1   0
1159 1   1   1
1160 1   1   1
;
run;


proc sql;
create table b as select count(unique subjid) as n, n02aa, n02ab, n02ae from a where  n02aa=1 & n02ab=1 & n02ae=1;
quit;
二维码

扫码加我 拉你入群

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

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

2020-6-4 19:36:24
你要找的是关联规则分析吗,请看此例:
[https://blog.csdn.net/Tiaaaaa/article/details/58615565]
二维码

扫码加我 拉你入群

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

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

2020-6-5 03:08:47
wang1839 发表于 2020-6-4 11:50
data a;
input subjid   n02aa n02ab n02ae;
cards;
这个数据集中variable有很多 (300个左右),不知道该怎么写一段macro实现两两variable的组合呢? 而不仅仅是给出的例子,我自己写了一段,有3w多个组合。。。运行到一半系统提示没有空间显示了
二维码

扫码加我 拉你入群

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

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

2020-6-8 09:04:57
基本思路:transpose之后(注意排序),为1的数据catx起来,一个人做成一条,然后proc freq算频数
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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