利用SAS软件制作报表的常用手法

您所在的位置:网站首页 统计描述分析怎么做表格模板 利用SAS软件制作报表的常用手法

利用SAS软件制作报表的常用手法

2024-07-16 14:23:28| 来源: 网络整理| 查看: 265

                             如何利用SAS 软件制作报表常用的技巧                                             

1、先设计好你的报表格式

2、用SAS过程先初步得到这些结果 1. 比如可以用means过程、univariate过程得到一些描述统计量; 2. 可以用means过程后面加选项t来做t成组检验,可以用ttest过程来做成组或配对t检验。 而t检验的前途条件要求数据服从正态分布,如果不服从正态分布可以用非参数检验。

3、利用SAS的ODS中ods select选择你所需要的结果 可以先用ods trace来看一下输出的结果都有哪些,然后用ods select选择结果到相应的数据集中。4、为了直接输出得到上面的表格,可以有两种方法来做。 一种是ODS;一种是利用put在结果输出窗口得到它,再粘贴到word中。

参考代码如下:

/* 该sas 文件旨在说明如何编写一次完成以后不用任何人手更改(包括更改日期、excel的格式等)的常规报表 参考了链接如下:http://bbs.pinggu.org/thread-1444265-1-1.html*/ options noxwait noxsync; options validvarname=any; /*该文件为固定报表模板,可以事先调整好单元格格式、字体颜色等*/ x '"C:\Users\Administrator\Desktop\报表模板.xlsx"'; /*设置各类时间,如test2012-05-16,就是用当天的时间、 sas程序运行的时间去得到这个"2012-05-16";另外一种是你要生成的excel文件是包含时间的,也在这里处理得出 */ data _null_; x = put(date()-1,yymmdd10.); /* 比如每日运行这个程序,处理前一日的文件,就是用date()-1 */ y =substr(x,6,2) || substr(x,9,2)||"b"; z =compress(input(substr(x,6,2),best8.)||"."||input(substr(x,9,2),best8.)); call symput('y',y); call symput('z',z); run; %let log=alla_&path; /* 我要处理的文件名就是 alla_0516b 这种形式 */ libname result "D:\test"; data temp1(compress=yes); set result.&log; /* 类似这样应用 */ run; /* 中间是你数据处理的过程,省略 */ filename r1 dde 'excel|[报表模板.xlsx]自定义表名1!r5c1:r60c6' ; /* 对某张表某些单元格进行写入 */ data _null_; set result1; file r1 notab linesize=2000; /* DDE默认空格为分隔符,如果一个变量中间有空格将会分开到两个单元格,用notab即可避免, linesize赋予一个足够大的值,则过长的变量不会错行 */ put date '09'x time '09'x source '09'x duration '09'x sql '09'x type; run; filename r1 dde 'excel|[报表模板.xlsx]自定义表名2!r5c1:r60c6' ; /* 继续写入下一张表 */ data _null_; set result2; file r1 notab linesize=2000; put date '09'x time '09'x source '09'x duration'09'x sql '09'x type; run; filename r1 dde "excel|system"; data _null_; file r1; put '[workbook.activate("自定义表名2")]'; /* 激活其中一张表 */ put '[row.height(0,"A1:A1",false,3)]'; /* 调整行高;类似这样的跟vba比较像 */ put '[workbook.activate("自定义表名1")]'; put '[row.height(0,"A1:A1",false,3)]'; x= compress('[save.as("D:\sql('||&path2||').xlsx")]'); /* 存储一个备份到某个路径,文件名为 sql(5.16).xlsx */ put x; y= compress('[save.as("E:\MailFile\sql('||&path2||').xlsx")]'); /* 存储到邮件文件夹,这样由邮件自动发送excel出去 */ put y; put '[quit]'; run; /*整个程序如上,然后txt写如下内容另存为bat文件,在windows-附件-系统工具-任务计划程序里面设置每日凌晨运行这个bat即可: D: cd: "D:\sas_program\sas\sasfoundation\9.2\" sas.exe -sysin "D:\thisprogramname.sas" -altlog "D:\test\log.log" */ /* 上述bat第二行是你sas程序的路径,第三行表示执行的sas程序的路径和名字,然后将sas运行的日志写入到log.log中, 以便事后查看日志 */ /*========================================================SAS 报表设计案例=====================================*/ /*四格表指标统计分析报表sas宏程序*/ %macro chisq (database= ,var= ,varfmt=,index=) ; proc freq data = &database. noprint ; tables &var. * group /out = TabFreq ; run ; data ma ( where = (group ="A") ) mb ( where= (group ="B") ) ; set TabFreq (keep = &var. group COUNT) ; where &var. = . ; run ; ods listing close ; ods output CrossTabFreqs = CrossTabFreqs chisq = chisqFishersExact=FishersExact ; proc freq data = &database. ; tables &var. * group /chisq exact expectednopercent norow ; run ; ods listing ; proc sort out = EXPECTED(keep = EXPECTED) data = CrossTabFreqs ( where = ( EXPECTED not=. ) ) ; by Expected ; run ; data T(keep = T) ; set EXPECTED ; if n = 1 then T = EXPECTED ; if T = . then delete ; run ; proc sort out = Frequency ( keep = Frequency) data = CrossTabFreqs ; by descending Frequency ; run ; data n (keep = n) ; set Frequency ; if n = 1 then n = Frequency ; if n = . then delete ;run ; run ; data chisq1 (keep =value1 Prob1 ) ; set chisq ( rename = (value = value1 Prob =Prob1) ) ; where (Statistic = ('Chi-Square') | Statistic = ('卡方') ) ; run ; data chisq2 (keep =value2 Prob2 ) ; set chisq ( rename = (value = value2 Prob =Prob2) ) ; where ( Statistic = ( 'Continuity Adj. Chi-Square') | Statistic =('连续校正卡方') ) ; run ; data Fishersexact (keep = cvalue1) ; set Fishersexact ; where (Name1 = ('XP2_FISH') ) ; run ; data st (keep = ma mb n T value1 Prob1 value2 Prob2 cvalue1&var. c) ; merge ma ( rename = (COUNT = ma) ) mb ( rename = (COUNT = mb) ) n Tchisq1 chisq2 Fishersexact ; &var. = - 99 ; if ma = . then ma = 0 ; if mb = . then mb = 0 ; format value1 6.2 value2 6.2 ; run ; data outa ( where = ( group ="A") ) outb (where = (group ="B") ); set CrossTabFreqs ; format ColPercent 6.2 ; run ; data outt (drop = table group _TYPE_ _TABLE_ Expected Missing); merge outa (rename = ( Frequency = A ColPercent = percentA) ) outb ( rename = ( Frequency = B ColPercent =percentB) ) ; if &var. = . then &var. = - 99; run ; proc sort ;by &var. ;run ; data _null_ ; file print notitle ; merge outt st ; if &var. = - 99 then do ; if n = 40 and 1 = 40 and T > = 5 then do ; put @3"&index. " @70 'chisq = 'value1 @83 'P='Prob1 ; end ; put @5 "例数(缺失) " @22 A '(' MA ') ' @47 B '(' MB ') '; end ; else do ; put @5 &var. '(%) ' @22 A '(' PercentA ') '@47 B'('PercentB ') '; format &var. &varfmt..; end ; run ; proc datasets; delete chisq chisq1 chisq2 Crosstabfreqs ExpectedFishersexact Frequency Ma Mb N Outa Outb Outt st stt t Tabfreq ; quit ; %mend chisq ; data jixian; input id group$ SEX; datalines; 1 A 1 2 A 2 3 A 2 4 A 2 5 B 1 6 B 2 7 B 1 8 B 2 ; run; proc format; value sexfmt 1='男性' 2='女性'; run; %chisq (database=jixian ,var=sex ,varfmt=sexfmt,index=性别)

其出来的结果如下:



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭