楼主: hmh3226@163.com
3384 4

[有偿编程] SAS 制作频数表(SOC/PT表格) [推广有奖]

  • 0关注
  • 0粉丝

硕士生

1%

还不是VIP/贵宾

-

威望
0
论坛币
322 个
通用积分
2.4312
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
126 点
帖子
13
精华
0
在线时间
231 小时
注册时间
2011-11-3
最后登录
2024-4-17

20论坛币
各位老师好,我问一下使用SAS制作table的问题(临床试验AE表格制作)
我的原始数据代码为:
data ae;
input soc:$20. pt $ level $ n;
cards;
感染及侵入类疾病 瘙痒 1级 5
感染及侵入类疾病 瘙痒 2级 5
感染及侵入类疾病 瘙痒 3级 2
感染及侵入类疾病 瘙痒 4级 3
感染及侵入类疾病 瘙痒 5级 5
感染及侵入类疾病 湿疹 1级 5
感染及侵入类疾病 湿疹 2级 5
感染及侵入类疾病 湿疹 3级 5
感染及侵入类疾病 湿疹 4级 2
感染及侵入类疾病 湿疹 5级 3
;
run;
我想得到如下的结果的表格,如何将soc pt level 三个变量 放到一个变量下?以及如何总数的计算:如瘙痒是20,湿疹是20,

  

感染及侵入类疾病是40。


SOC例次
     感染及侵入类疾病40
         瘙痒20
            1级5
            2级5
            3级2
            4级3
            5级5
          湿疹20
            1级5
            2级5
            3级2
            4级3
            5级5


最佳答案

zdl1225 查看完整内容

两个方案,第一个简单点,但soc pt level 三个变量不在一列;第二个方案多几个步骤,不知道别人能不能提供更简洁的步骤。 方案一: proc report data=ae missing; column soc pt level n; define soc/group; define pt/group; define level/group; define n/analysis sum '例次'; break befo ...

回帖推荐

zdl1225 发表于2楼  查看完整内容

两个方案,第一个简单点,但soc pt level 三个变量不在一列;第二个方案多几个步骤,不知道别人能不能提供更简洁的步骤。 方案一: proc report data=ae missing; column soc pt level n; define soc/group; define pt/group; define level/group; define n/analysis sum '例次'; break befo ...
沙发
zdl1225 发表于 2020-4-1 00:37:48 |只看作者 |坛友微信交流群
两个方案,第一个简单点,但soc pt level 三个变量不在一列;第二个方案多几个步骤,不知道别人能不能提供更简洁的步骤。

方案一:
proc report data=ae missing;
        column soc pt level n;
                        define soc/group;
                        define pt/group;
                        define level/group;
                        define n/analysis sum '例次';
                break before pt/summarize style=[backgroundcolor=#DBEEF4 color=blue];
        break before soc/summarize style=[backgroundcolor=#FFF2CC color=red fontweight=bold];
        title 'xxxx';
run;

方案二:
proc report data=ae missing;
        column soc pt level n;
                        define soc/group;
                        define pt/group;
                        define level/group;
                        define n/analysis sum '例次';
                break before pt/summarize;
        break before soc/summarize;
        ods output report=work.aaa;
        title 'xxxx';
run;
data work.aaa;
        retain var n;
        set aaa;
                array varlist[*] $ soc pt level;
                        do i=1 to dim(varlist) by 1;
                                if missing(varlist[i])=0 then var=varlist[i];
                        end;
                keep var n;
run;
proc print data=work.aaa;run;

使用道具

zdl1225 发表于 2020-4-1 14:29
两个方案,第一个简单点,但soc pt level 三个变量不在一列;第二个方案多几个步骤,不知道别人能不能提供更 ...
谢谢!方案二帮上大忙了。老师,我想再问一下,实际过程中level并不会都是5级,如何标准化?
代码如下:
data ae;
input soc:$20. pt $ level $ n;
cards;
感染及侵入类疾病 瘙痒 1级 5
感染及侵入类疾病 湿疹 2级 5
感染及侵入类疾病 湿疹 3级 5
胃肠道疾病 呕吐 3级 1
胃肠道疾病 腹泻 1级 2
;
run;

目标结果:
socptleveln
感染及侵入类疾病瘙痒1级

5

感染及侵入类疾病瘙痒2级

0

感染及侵入类疾病瘙痒3级

0

感染及侵入类疾病瘙痒4级

0

感染及侵入类疾病瘙痒5级

0

感染及侵入类疾病湿疹1级

0

感染及侵入类疾病湿疹2级

5

感染及侵入类疾病湿疹3级

5

感染及侵入类疾病湿疹4级

0

感染及侵入类疾病湿疹5级

0

胃肠道疾病呕吐1级

0

胃肠道疾病呕吐2级

0

胃肠道疾病呕吐3级

1

胃肠道疾病呕吐4级

0

胃肠道疾病呕吐5级

0

胃肠道疾病腹泻1级

2

胃肠道疾病腹泻2级

0

胃肠道疾病腹泻3级

0

胃肠道疾病腹泻4级

0

胃肠道疾病腹泻5级

0






使用道具

板凳
zdl1225 发表于 2020-4-2 14:39:50 |只看作者 |坛友微信交流群
hmh3226@163.com 发表于 2020-4-1 22:25
谢谢!方案二帮上大忙了。老师,我想再问一下,实际过程中level并不会都是5级,如何标准化?
代码如下: ...
回答你第二个问题:方法可能原始了一点,没有高级的语法,供参考。

data work.aaa;
input soc: $20. pt $  level $ n;/*这一行发帖子后,SOC和pt后面的s符号显示有问题*/
cards;
感染及侵入类疾病 瘙痒 1级 5
感染及侵入类疾病 瘙痒 2级 5
感染及侵入类疾病 瘙痒 3级 2
感染及侵入类疾病 瘙痒 4级 3
感染及侵入类疾病 瘙痒 5级 5
感染及侵入类疾病 湿疹 1级 5
感染及侵入类疾病 湿疹 2级 5
感染及侵入类疾病 湿疹 3级 5
感染及侵入类疾病 湿疹 5级 3
胃肠道疾病 呕吐 3级 1
胃肠道疾病 呕吐 2级 5
胃肠道疾病 腹泻 1级 2
;
run;
data work.bbb;
n=0;
        do pt='瘙痒', '湿疹';
                        do level='1级', '2级', '3级', '4级', '5级';
                                soc='感染及侵入类疾病';
                                output;
                        end;
                output;        
        end;
        do pt='呕吐', '腹泻';
                        do level='1级', '2级', '3级', '4级', '5级';
                                soc='胃肠道疾病';
                                output;
                        end;
                output;
        end;
run;
data work.ccc;
        set work.aaa work.bbb;/*原始数据放前面,补充数据放后面*/
run;
proc sort data=work.ccc out=work.ddd nodupkey; by soc pt level; run;


使用道具

zdl1225 发表于 2020-4-2 14:39
回答你第二个问题:方法可能原始了一点,没有高级的语法,供参考。

data work.aaa;
谢谢!

使用道具

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

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

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

GMT+8, 2024-4-19 22:40