2024年3月24日发(作者:)
・
938
・
中国卫生统计
2019
年
12
月第
36
卷第
6
期
SAS
利用
RTF
语言输出报表
南京医科大学公共卫生学院生物统计学系
(211166)
钟玲珑娄冬华
△
对于临床研究所需报告
,
鉴于图表的可读性和可
需提前设置色组
,
背景色设置命令
clcbpatN
。
表
1
为
采用
RTF
语言修饰过的表格
。
表
1
人口信息
(
FAS)
编辑性一般采用的是
WORD/RTF
形式编辑报告
。
而
SAS
软件作为目前临床研究公认的统计分析软件之
一
,
其表格的输出方法和输出表格的可读性
、
美观程度
十分重要
。
目前较多采用的是
SAS
自带的输出过程
步
(
Proc
Report
)
及模板的调试
(
Proc
Template
)
实
现⑴
,
且为使输出方便编制成相应输出宏
〔
2
】
。
统计表
格格式在药企
/CRO
(全称
Contract
Research
Organiza-
tion)
内部制定一套标准化
、
可读性好
、
美观的报表十
分必要
。
过程步
Proc
Report
常使用部分
RTF
语
言⑶
,
对报告输出格式进行控制
。
为达到同在
RTF
中
直接编辑报表所能达到的效果
,
本文讨论另一种
SAS
输出方法
,
使用
SAS
软件结合
RTF
语言⑷
,
创建出更
为灵活的统计表格输出
,
并创建
SAS
宏
,
使得
SAS
输
出相对于使用
SAS
过程步
Proc
Report
更为简便
。
RTF
语言规则介绍
富文本格式
(
RTF)
规范是为了便于在应用程序之
间轻松转储格式化文本和图形的一种编码方法
,
RTF
文件由未格式化本文
、
控制字
、
控制符和组组成
。
控制
字形式为
“
字母序列
”
,
控制符由一个反斜线
“
”
跟随
单个非字母字符组成
,
组由包括在
“
”
中的文本
、
控
制字或控制符组成⑷
。
SAS
采用
RTF
书写规则可达
到直接控制统计表格输出单元格的效果
。
1.
SAS
采用
RTF
语言输出
RTF
的基本考虑
单个统计表格可主要分为设置
RTF
基本属性和
输出统计图表
。
设置
RTF
基本属性包括
:
(
1)
设置
RTF
后文采用的标准表示法和格式化
,
一般可采用
ANSI(
American
National
Standards
Institute
)
;
(2)
设置
后文可能采用的字体
、
字体大小
、
颜色等属性
;
(
3)
定
义输出纸张大小
、
页边距
;
(
4)
设置页眉
、
页脚
。
输出
统计图表包括:标题表头和统计图表内容
。
2.
采用
RTF
语法的输出结果举例
若需要在表格中进行单元格表框的线条
、
背景颜
色等独立单元格设置
,
可采用
RTF
语言
,
预先设置
RTF
色组和单元格边框类型
、
边框粗细
,
可达到细致
定制
RTF
效果
:
下边框线条设置命令
clbrdrbbrdrs
brdrwN,
上边框
、
左右边框设置命令类似
。
背景颜色
△通信作者
:
娄冬华
,
:
loudonghua@
sohu.
com
人口信息基线特征
姓名
性另
IJ
年龄
身高体重
阿尔弗雷德
男
14
69
112.5
威廉男
15
66.5
112
3.
RTF
输岀功能实现的主体语句
在统一输出格式的基础上编写
RTF
输出宏
,
下文
将介绍该输出功能的
SAS
程序的主体部分
,
设置
RTF
基本属性和输岀统计图表
。
设置
RTF
基本属性
:
(1)
RTF
起始结构
,
设置
RTF
采用标准及输出文
档采用的字体
:
rtfl
ansi/
*
rtf
:
起始
rtf
语言
;
ansi
:
设置
RTF
采用
ANSI
标准
*
/
deff
j
fonttbl/
*
deff
j
fonttbl
设置
RTF
所采
用的字体
*/
j
fl
ffroman
charsetO
fprg2
Times
New
Ro
man
;
j
j
f2dbchcharsetOfprg2
fcbtefccfe5
9
;
}/
*
宋体
*/
1
(2)
若对
RTF
有颜色控制,需设置相应的色组以
便正文的引用
:
{
colortbl
;
redO
greenO
blueO
;
redO
greenO
blue255
;
.......
;
(
(3)
设置
RTF
输出纸张
,
以纵向
A4
纸的设置为
例
,
以缓为单位
,
页面宽为
11907,
高为
16840,
marglN
margrN
margtN
margbN
为设置纸张的页边距
:
paperw
11907
paperh
16840
marglN
margrN
margtN
margbN
(4)
设置脚注
,
包括脚注的位置
、
字体
、
内容
,
以下
图列脚注为例
:
13MAR201
8
:
09
:
20
南京医科大学
Page
1
of
I
包括设置脚注的位置
、
文本内容
、
字体
、
段落属性
。
本例采用当前
RTF
生成日期及
RTF
自动页码域引
用
。
基于
RTF
的页面
、
页边距
,
设置脚注的宽度
:
cellxN
cellxN
.......
;
采用
SAS
自动宏变量
:
Chinese
Journal
of
Health
Statistics
,
Dec.
2019
,
Vol.
36
,
No.
6
&sysdate9systime
设置
RTF
生成时间
;
采用
RTF
域
指令
{
PAGE
|
、
)
NUMPAGES
!
设置自动页码
:
j
footer
pard
plain
trowd
trgaph20
trql
cellxNcellxN
cellxN
pard/
*
脚注设置
3
个单
元格
*
/
qlwidctlparintbl
fi0f3
fsl6
b0il
&sysdate9
:
&systime
i0
cellpard/
*
RTF
生成时间
*
/
qc
widctlpar
intbl
fiO
f3
fsl
6
bO
i
1
南京医科
大学
i0
cellpard/
*
RTF
生成单位
*
/
qrwidctlpar
intbl
fi0
f3
fsl6
b0
il
Page
)
field)
*
fldinst
{
PAGE
HI
of
j
field)
*
fldinst
{
NUMPAGES
}
i
}
i0
cellpard/
*
RTF
页码
*
/
widctlpar
intbl
row
pard
}
(5)
输出统计图表
。
输出统计图表内容可分为:标题
、
表头
、
表格内容
和表格对应的脚注
。
输岀图表内容
,
可把除表格内容
外的信息处理成相应宏变量
,
以便宏编辑
。
需注意标
题大纲级别的设置
、
表格边框线宽
、
每页输出行数等细
节问题
。
表
2
为测试实例
,
所采用的
SAS
程序见附录
1
,
宏见附录
2
。
表
2
人口信息
(FAS)
姓名
人口信息
基线特征
性别
年龄
身高
体重
阿尔弗雷德
14
69
112.5
爱丽丝
13
56.5
84
芭芭拉
13
65.3
98
凯露
14
62.8
102.5
亨利
14
63.5
102.5
詹姆斯
12
57.3
83
简
12
59.8
84.5
雅妮特
15
62.5
112.5
杰弗瑞
13
62.5
84
约翰
12
59
99.5
乔伊斯
11
51.3
50.5
茱迪
14
64.3
90
罗伊斯
12
56.3
77
玛丽
15
66.5
112
菲利普
16
72
150
罗伯特
12
64.8128
罗纳德
15
67
133
托马斯
11
57.5
85
威廉
15
66.5
112
*
:年龄
=
(
知情日期-出生日期
+
1
)/365.
25
,
取整
讨
论
SAS
的数据输出还可借用
SAS
DDE
数据交换技
术⑸
,
将结果输出至
excel
、
CSV
等外部文件
,
这类
外部文件可较好的展示数据清单
,
但对于统计汇总表
的表现和阅读习惯仍无法很好的满足
。
若不采用
RTF
语言编译
,
直接采用输出至
TXT
文档
,
对于后期
撰写统计报告
、
总结报告需要摘录表格时
,
可能岀现文
字移位
、
文字过长导致换行的问题
,
表格不容易利用和
调整
。
Proc
Report
可以较好的实现输出功能卩⑷
,
但
受限于
SAS
对于过程步语法设置量
,
仍存在如单元
・
939・
格背景颜色设置
、
自动页码生成及更新等细节上较难
实现
。
利用
RTF
语法
,
设计相对固定结构的表格能在
RTF/WORD
中有很好的输出表现
。
同时
,
运用域指
令可高效的对输出文档进行二次编辑
,
能更方便的完
成文档合并
、
目录生成的功能
。
RTF
语法的不足主要为语法较为复杂
,
语法的开
放性不易于培养人员掌握
,
对于输出宏的制定者有一
定的
RTF
语言基础要求.输出模板及宏的制定也使得
输出的灵活性受到限制
。
确定好表格的输出规范
,
定
制
RTF
输出宏就显得尤为重要
。
对宏程序进行深度
的测试
,
确保输出宏不会影响数据结果
。
笔者总结一
些心得体会
:
(
1
)
设置标题的大纲级别有利于后期对
RTF
的域引用。
(
2)
设置页眉
、
脚注是尽量采用域指
令,以避免页码等岀错的可能
。
(
3)
宏编辑过程中考
虑到后期表格合并
,
在编写代码时可预先设置好标记
代码以便后期自动合并程序的利用标记
。
参考文献
[1
]
李宏田
,
刘建蒙•直接输出科研论文统计表格的
SAS
宏.中国卫生
统计
,2010,27(6)
:
653-655.
[2
]
潘俊霞.疫苗临床试验中盲态核査结果自动化输出的SAS
可视化
实现
.2017
年中国卫生统计学学术年会论文集.
[3
]
魏永越
,
赵杨
,
柏建岭
,
等.
SAS
ODS
及
RTF
标记语言在临床试验
规范化统计报表输出中的应用.中国卫生统计
,2010,27(4)
:428-
430
+433.
[4
]
RaTFink.
Rich
Text
Format.
2014.
[5
]
Publishing
S.
Base
SAS
9.
2
Procedures
Guide
:
Statistical
Proce
dures.
SAS
Publishing,
2008.
[6]
熊勇超
,
夏兰芳,宋渝丹
,
等.
Tagsets.
ExcelXP
语句在
SAS
导出到
Excel
的方法应用.中国卫生统计
,2016,33(2)
:336-338.
[7]
田晓燕
.SAS
的
DDE
技术在统计报告自动化中的应用
//
全国卫
生统计学术会议
.2004.
[8
]
Hadden
LS.
Turn
the
Tables
on
Boring
Reports
with
SAS?
9.
2
and
RTF
Tagset
Options.
[9
]
Publishing
S.
SAS/STAT
9.
2
User's
Guide:
Statistical
Graphics
U-
sing
ODS-Book
Excerpt.
SAS
Publishing,
2009.
[10]
Ahsan
K,Lee
J
M,Johnson
K.
SAS
ODS
RTF
OUTPUT
Methods.
附录
1:
OPTIONORIENTATION
=
portrait
ps
=
30
;
%
let
headerl
=
!!
clcb
人口信息”
!
clcb
基线特征
*
!
;
%
let
header2
=
!
ql
姓名
!
qc
性别
!
年龄
!
身高!体重!;
%
let
mystyle
=
20
10
10
10
10
;
footnote
1
注:年龄
=
(
知情日期-出生日期
+
1
)/365.
25
,
取整;
titlel
表
2
人口信息
(FAS)
;
%
rtfreport
(
inset
=
sashelp.
class
,
headrow
=
2
,
filetype
=
rtf,
ostyle
=
&mystyle
,
file
=
RTF
file
path
、
表
2
,
append
=
new
,
lstyle
=
lcccc
)
;
附录
2
:
・
940
・
*
宏变量定义
:
*
headerl
,header2
.......
:需要在宏执行之前定义好
。
*
mystyle
:
需要在宏执行之前定义好
。
*
*
&_columnl
&_column2
&_column5
:每列长度
*
&_columnCl
&_columnC2
&_columnC5
:每列单元格右边界
*
&_columnT
:
mystyle
的总列长
*
<8^columnN
:数据集总列数
*
&_vnameN
:变量名字
*
—
TITLE
:
表格标题
*_FOOTn
:
脚注数量
*_FOOT&
:脚注文本
*
_cellh&h
:
header
定义的列数
*
_paperw
:
页宽;
_paperh
:
页高
;
*
_footcell
:
脚注位置
*
_maxpw
:
除去页边距后宽度
*
*
&&header&
I.
N
:
HEADERx
单元格数
*
HxCx
:
对应
HxCx
的右边界宽度
*
VHxCx
:
对应
HxCx
的值
*
*************************/
%
macro
rtfreport
(
inset
=
A,
headrow
=
,
filetype
=
rtf,
ostyle
=
&mystyle
,
file
=
, append
=
new
,
lstyle
=
lcccc
)
;
%
local
_oriopt
_paperw
_paperh
_footcell
_maxpw
_headem
_col-
num
_TITLE
;
%
let
_oriopt
=
%
sysfunc
(
getoption(
NOTES
))
%
sysfunc
(
getop-
tion
(
mprint
))
;
option
nonotes
nomprint
;
filename
test
"
Mile.
.
&filetype"
;
/
*
处理
&nset,
加上
libname
*
/
%
IF%
SYSFUNC
(INDEX
(
&
nset,.
))=0%
then%
let
inset
=
WORK.
&
nset
;
data
_null_
;
set
SASHELP.
VCOLUMN
;
where
UPCASE
(
libname
)
=
UPCASE
(
scan
(
“
&nset
”
,
1
,
:
0
)
and
UPCASE
(
memname
)
=
UPCASE
(
scan("
&nset"
,2/
0
)
;
/
*
数据集变量-
_vnameN
*
/
call
symput(
cats(
Ivname
;
vamum)
,
name)
;
*/
数据集变量数
S-_celldn/
*
call
symput(
IcolumnNcats
(
_n_
))
;
run
;
%
DO
I
=
1
%
TO&_columnN
;
%
let
_lstyle&i.
=
%
substr
(
&
style
,
&.
,
1
)
;
%
END
;
proc
sql
noprint
;
/
*
表格标题
*
/
中国卫生统计2019
年
12
月第
36
卷第
6
期
select
STRIP
(
text
)
into:
_TITLE
from
sashelp.
VTITLE
where
type
=
X
T
z
;
%
let
.TITLE
=
&.TITLE
;
/
*
脚注数量・
_FOOTn
*
/
select
count
(
*
)
into
:
_FOOTn
from
sashelp.
VTITLE
where
type
=
'
F
'
;
/
*
脚注-
_FOOT&
*
/
%
do
i
=
l%to
;
select
STRIP
(text)
into
:
_FOOT
&
from
sashelp.
VTITLE
where
type
二
F'and
number
=
&
;
%
let
_FOOT&
二
&&_FOOT&i
;
%
end
;
quit
;
/
*
header
定义的列数
*
/
data
_null_
;
%
do
h
=
1%
to
(
&headrow
;
call
symput(
"
_cellh&h"
, cats
(
length
(
compress
(
"
&&header&h
"
,
'
!
a
mi
))
;
%
end
;
run
;
%
do
h
=
1%
to&headrow
;
%
if&&_cellh&h
ne
&_columnN
%
then%
do
;
*/
提示
header
定义的列数和实际数据集中的列数是否匹配
*/
%
put
WARNING
:
header&h
has
&&_cellh&h
columns
while
data
has
&_columnN
columns.
;
%
end
;
%
end
;
*
/
定义页面设置
*
/
%
if
”
%
sysfunc
(
getoption
(
ORIENTATION
)
)
”
=
"
LAND
SCAPE"
%
then%
do
;
%
let
_paperw
=
16840
;
%
let
_paperh
=
11907
;
%
let
_footcell
=
cellx4737
cellx9474cellxl4248
;
/
*
分配给
mystyle
的长度
*
/
%
let
_maxpw
=
%
eval(
&_paperw.
-1296
*
2)
;
%
end
;
%
else%
if
*
%
sysfunc
(
getoption
(
ORIENTATION
))
”
=
H
POR
TRAIT"
%
then%
do
;
%
let
_paperw
=
11907
;
%
let
_paperh
=
16840
;
%
let
_footcell
=
cellx3104
cellx6209
cellx9315
;
/
*
分配给
mystyle
的长度
*
/
%
let
_maxpw
=
%
eval(
迄
paperw.
-1296
*
2)
;
%
end
;
/
*
按
mystyle
计算
column
的长度
,
定义每个
cell
的右边距
*/
DATA
_NULL_
;
Chinese
Journal
of
Health
Statistics
,
Dec.
2019
,
Vol.
36
, No.
6
length
var
$
20
;
_columnT
=0
;
DO
UNTIL(
var
=
;
call
symput(
"
_mystyleN"
,cats(
K)
)
;
K
+
l
;
var
=
SCAN
("
&mystylen
,
K
,
J
;
call
symput(
"
_column"
I
I
cats(
K)
,
STRIP
(
var)
)
;
if
not
missing
(
var)
then
_columnT
=
_columnT
+
input
(
var,
best
)
;
call
symput(
'
*
_columnT"
,cats(_columnT)
)
;
END
;
RUN
;
%
if&_mystyleN
ne
龟
columnN
%
then%
do
;
*
/
提示
mystyle
定义的列数和实际数据集中的列数是否匹配
*
/
%
put
WARNING:
mystyle
has
&_mystyleN
columns
while
data
has
&_columnN
columns.
;
%
end
;
DATA
_NULL_
;
%
DO
1
=
1%
TO&_mystyleN
;
_TCOL=0
;
%DO
K
=
1%TO&
[
;
_TCOL
=
SUM(_TCOL,
迅
column/)
;
%
END
;
call
symput(
"
_columnC"
I
I
cats
(
&
)
,
cats
(
int
(
_TCOL/&_
columnT
*
&_maxpw
)))
;
%
END
;
RUN
;
/
*
定义
header
的
cell
右边距
-start
*
/
%
DO
I
=
1%
TO
&
headrow
;
%
let
header
(
8d.
N
=
%
eval
(
%
sysfunc
(
count
(
"
&S«EADER
也
.
”
,
!
))」
)
;
%
END
;
DATA
_NULL_
;
length
var
$
200
;
RETAIN
he
0
;
%
DO
H
=
1%
TO
Aheadrow
;
%
DO
J
=
1
%
TO
&Sdieader&H.
N
;
var
=
SCAN
(
TRANWRD
(
"
&SHEADER
旳
/
!
J
!
HEADER_CELL
=
&J
;
IF
=
1
THEN
HC
=
count(var,^
0
;
ELSE
HC
=
HC
+
count(var/"
0
;
HEADER_CELLx
=
SUM(
HC
,
)
;
/
*
HxCx,
对应
HxCx
的右边界宽度
*
/
CALL
SYMPUT(
'
H
J
丨
CATS
(
)
I
P
C
z
l
I
CATS
(
HEADER.
CELL)
/_columnC
1
I
CATS
(
HEADER_CELLx
))
;
・
941
・
/
*
VHxCx,
对应
HxCx
的文本
*/
CALL
SYMPUT(
'
VH
1
I
CATS
(
妞
)
I
I
'
C
J
I
CATS
(
HEADER_CELL)
,STRIP(
var)
)
;
OUTPUT
;
%
END
;
%
END
;
RUN
;
/
*
定义
header
的
cell
右边距
-end
*
/
option
notes
;
data
_null_
;
file
test
;
set
&INSET.
end
=
end
;
/
*
STEP1
:设置页面
,
页脚
*/
IF
_N_
=
1
THEN
DO
;
*
/
rtf
:
起始
rtf
语言
;ansi
:
促使
rtf
阅读器早期版本
/*
的兼容性
*
/
deff
设置接下来文本的字体
*
/
f
*
/
l
;
f2
;
f3
;
f4
;
f5
;
f6
控制的几种字体
/*
put
"
|
rtfl
ansi"
;
put
M
deff
|
fonttbl
n
;
put
n
|
fl
fmodemfcharsetOfprq
1
Courier
New
;
"
;
put
"
|
f2
ffroman
charsetO
fprg2
Times
New
Ro
man
;
)
;
put
”
{
f3
ffswisscharsetO
fprg2
Arial
;
|
"
;
put
"
j
f4
dbch
charsetO
fprg2
fcbtefccfe5
9
;
|
"
;
put
“
}
”
;
*/
信息组包含了文档的相关信息
。
这些信息包括:
标题
、
作者
、
关键字
、
注释和文件的其它特定信息
。
*/
put
11
|
info
”
;
put
"
|
title
创建
RTF
|
”
;
put
"
|
author
南京医科大学|
;
put
"
j
company
南京医科大学}
”
;
/
*
C010rtbl
:
用于标明颜色表组
*
/
put
"{
colortbl
;
redO
greenO
blueO
;
redO
greenO
blue255
;
redO
green255
blue255
;
redO
green255
blueO
;
red255
greenO
blue255
;
red255
greenO
blueO
;
red255
green255
blueO
;
"
;
put
"
red255
green255
blue255
;
redO
greenO
bluel28
;
redO
green
128
blue
128
;
redO
green
128
blueO
;
red
128
greenO
blue
128
;
redl28
greenO
blueO
;
redl28
green
128
blueO
;
"
;
put
”
redl28
greenl28
bluel28
;
red
192
green
192
bluel92
;
red255
green255
blue255
;
cbackgroundonectint255
cshadel91
redl91
greenl91
bluel91
;
|
H
;
put
h
r
*
;
*
/
paperwl6840paperhl
1907
:
控制页宽页高
;
*
/
/
*
widowctrl
:
允许孤行
;*
/
・
942
・
*
/
ftnbj
:
页底的脚注(底对齐)
*
/
*
/
fet0
:
脚注/
尾注类型
o
;
sectd
:
重新设置为默认的
节属性
。
lndscpsxn
:
页方向为横向格式
。
;
*
/
*
/
linex
:
行编号与左边文字的距离(单位:缓
,
默认
为
360)
。自动距离为
0
。
*
/
/
*
margl,margr,
margt
,
margb
:
以缓为单位的左
边距
、
右边距
、上边距、
下边距
*
/
put
"
paperw
(
S^paperw.
paperh
(
S^paperh
"
;
put
H
margll296"
;
put
"
margrl296"
;
put
"
margt432"
;
put
"
margb288"
;
put
"
(
footer
pardplain"
;
put
"
trowdtrgaph20trql"
;
put
"
&_footcell.
pard"
;
put
"
qlwidctlparintblfiOf3fsl
6bOil
&sysdate9
:
&systime
i0
cell
pard"
;
put
"
qcwidctlparintblfi0f3fsl6b0il
南京医科
大学
i0
cellpard
n
;
/
*
'field
:
控制域引用
;fldinst
:
域指令引用
*/
put
"
qr
widctlpar
intbl
fiO
f3
fsl
6
b0
il
Page
|
field)
*
fldinst
|
PAGE
||
I
of
|
field
(
*
fldinst
{
NUMP
AGES
|
|
|
i0
cellpard"
;
put
"
widctlparintbl
rowpard"
;
put
H
I
";
*/
最前面放了下面三行
*/
put
"
|
*
startlOOOO|
"
;
END
;
S
*
/
TEP2
:
设置表头
/*
IF
_N_
=
1
OR
(
_N_-1
)/(
%
sysfunc
(
getoption
(
ps
)))
=
INT
((
_
N_-l
)/(
%
sysfunc(
getoption
(
ps
))))
THEN
DO
;
/
*
接下来是表头和正文内容
*
/
IF
_N_
=
1
THEN
DO;
/
*
put
"
fsl6parpardfi0f3fs24bl
sl
<ITLEpar"
;
*
/
put
n
fsl6pardfi0f3fsl6blsl
^TITLEpar
n
;
END
;
ELSE
DO
;
put
"
fsl6parpardfi0f3fsl6bl
&_TITLE(Contin
ue)
par";
END
;
put
”
pard"
;
put
"
pard"
;
*/
设置三线表边宽
;
*/
/
*
clbrdrt
:
上边框
;
brdrs
:
单倍厚度边框八
brdrw30
:
绘制段落边线的画笔宽度
,
不超过
75
。
*/
/
*
clbrdrb
:
下边框
;
brdrs
:
单倍厚度边框
;
brdrw30
:
绘制
段落边线的画笔宽度
,不超过
75
。
*/
中国卫生统计
2019
年
12
月第
36
卷第
6
期
%
DO
1
=
1%
TOtSbeadrow
;
put
"
trowdtrgaph20trql";
%DO
K
=
l%TO&&header&I.
N
;
%
IF%
SYSFUNC
(
INDEX
(
C&K.
.,
J
)
>0
AND
NE
Aheadrow
%
THEN%
LET
_clbrdrb
=
clbrdrb
brdrsbrdrwl5
;
%
ELSE%
IF
反
EQ
&headrow
%
THEN%
LET
_
clbrdrb
=
clbrdrb
brdrs
brdrw30
;
%
ELSE%
LET
.clbrdrb
=
;
%
IF&I
=
1
%
THEN%
LET
_clbrdrt
=
clbrdrt
brdrsbrdrw30
;
%
ELSE%
LET
_clbrdrt
=
;
%
IF%
SYSFUNC
(INDEX
(&&&&VH&1.
.
,
clcb)
)
>
0%
THEN%
LET
_clcb
=
clcbpatl8
;
%
ELSE%
LET
_clcb
=
;
put
"
&
_
clbrdrt.
&
_
clbrdrb.
&
_
clcb.
也.
C
凰
G
.
“
;
%
END
;
put
"
pard"
;
%
DO
K
=
l%
TO&Sdieader&i.
N
;
%
LET
_VHC
=
%
SYSFUNC
(
TRANWRD
(&&&&VH&I.
C&K..
,",))
;
put
"
qcwidctlparintbl
HOf3fsl6bOil
&_
VHC.
i0
cellpard"
;
%
END
;
put
"
widctlpar
intbl
row
pard"
;
%
END
;
END
;
S
*
/
TEP3
:
设置正文
/*
/
*
正文
cell
*
/
IF
END
=
1
OR
_N_/%
sysfunc
(
getoption
(
ps)
)
=
INT
(
_N
_/%
sysfunc
(
getoption
(
ps)
))
THEN
DO
;
put
"
trowdtrgaph20trql"
;
%
DO
I
=
1
%
TO&_columnN
;
PUT
"
clbrdrb
brdrs
brdrw30
cellx&&
_
columnC&i"
;
%
END
;
END
;
ELSE
DO
;
put
"
trowdtrgaph20trql"
;
%
DO
1
=
1%
TO
龟
columnN
;
PUT
"
cellx&&_columnC
&”
;
%
END
;
END
;
put
"
pard"
;
/
*
正文内容
*
/
%
DO
1
=
1%
TO&_columnN
;
(下转第
946
页)
•
946
•
Chinese
Journal
of
Health
Statistics
,
Dec.
2019
,
Vol.
36
,
No.
6
錄⑺大致相同
。
死亡中位年龄分别为直肠癌
71.25
岁
,
直肠癌
68.
05
岁
。
本文通过实例介绍了
R
软件
BaSTA
包在贝叶斯
框架下
,
对捕获-再捕获数据集进行年龄别生存分析的
方法
。
借助该包对患者进行生存分析,可有效分析现
有的临床医学数据,给出患者的生存参数估计值
,
并进
行可视化展示
,
具有广泛的应用价值
。
参考文献
[1
]
Colchero
F
,
Jones
OR
,
Rebke
M.
BaSTA
:
an
R
package
for
Bayesian
estimation
of
age-specific
survival
from
incomplete
mark-recapture/
1.0
0.8
recovery
data
with
co
variates.
Methods
in
Ecology
&
Evolution
,
2012,3(3)
:
466470.
[2
]
Gelfand
A
,
Smith
AM.
Sampling-Based
Approaches
to
Calculating
Marginal
Densities.
Journal
of
the
American
Statistical
Association
,
1990,85(410)
:398409.
[3
]
Spiegelhalter
D
,
Best
N,Carlin
B
,
et
al.
Bayesian
measuresof
model
40
60
年龄
80
100
120
complexity
and
fit.
Journal
of
the
Royal
Statistical
Society
:
Series
B
,
Statistical
Methodology
,2002,64(4)
:
583-639.
[4
]
Gompertz
B.
On
the
nature
of
the
function
expressive
of
the
law
of
图
7
不同患癌部位肠癌患者的年龄别生存率曲线图
3.
结论分析
肠癌患者整体死亡率随着年龄的增长而增长
,
其
human
mortality
,
and
on
a
new
mode
of
determining
the
value
of
life
contingencies
:
in
a
letter
to
Francis
Baily
,
Esq.
F.
R.
S.
&c.
.
Philo
sophical
Transactions
of
the
Royal
Society
of
London
,
1825
,
115
(2)
:513-583.
死亡中位年龄为
71.55
岁
。
不同性别肠癌患者的死亡
率均随着年龄的增长而增长
,
其中男性患者的年龄别
死亡率高于女性患者
,
这与李德錄⑺
,王宁⑻等人得
到的结论相同
。
死亡中位年龄分别为女性
71.65
岁
,
男性
69.
25
岁
。
不同患癌部位的肠癌患者死亡率均随着年龄的增
[5
]
Vaupel
JW
,
Stallard
ME.
The
impact
of
heterogeneity
in
individual
frailty
on
the
dynamics
of
mortality.
Demography
,
1979
,
16
(
3
)
:
439-
454.
[6
]
Pletcher
SD.
Model
fitting
and
hypothesis
testing
for
age-specific
mor
tality
data.
Journal
of
Evolutionary
Biology
,1999,12(3)
:
430-439.
[7]
李德錄
,
吴春晓
,
郑莹
,
等.上海市
2003
-2007
年大肠癌发病率和
长而增长
,
其中大约在
60
岁之前
,
直肠癌患者的年龄
死亡率分析•中国肿瘤
,2011,20(6)
:413418.
[8
]
王宁
,
孙婷婷,郑荣寿
,
等.中国
2009
年结直肠癌发病和死亡资料
别死亡率低于结肠癌患者
,
在
60
岁之后
,
直肠癌患者
的年龄别死亡率高于结肠癌患者
,
得到的结果与李德
分析•中国肿瘤
,2013,22(7)
:515-520.
(责任编辑:刘壮)
(上接第
942
页)
%IF&I
=
l%then%do
;
if
substr
(
&&_vname<53
,1,1)
=
""
thenput
"
q&&_
END
;
IF
_N_/%
sysfunc
(
getoption (
ps
))
=
INT
(
_N_/%
sysfunc
(
ge
toption
(
ps)))
AND
NOT
END
THEN
DO
;
lstyle&I.
widctlpar
intbl
fiO
f3
fsl6
bO
"
&&_
vname&[
$500.
"
b0
i0
cellpard"
;
else
put
"
q&&_lstyle&I.
widctlpar
intbl
fiO
f3
fsl6
bl
”
込
vname
也
$500.
"
b0
i0
cellpard"
;
put
"
page"
;
put
"
qi
widctlpar
H0f2fs2
par"
;
END
;
STEP4
*
/
:
rtf
结束
*
/
%
END
;
%
ELSE%
DO
;
put
"
q&SUstyle&i.
widctlpar
intbl
fiO
f3
fs
16
bO
"
&&_vname&I
"
b0
i0
cellpard";
IF
END
THEN
DO
;
%
DO
1
=
1%
TO
龟
FOOTn
;
put
”
fi0f3fsl6b0
込
FOOT&parpard
”
;
%
END
;
put
"
pard"
;
put
"
qc
widctlpar
fiOf2fs2
par
*
end
100001
|
"
;
END
;
RUN
;
%
END
;
%
END
;
put
"
widctlpar
intbl
row
pard"
;
/
*
STEP3
:
设置脚注
/*
IF
_N_/%
sysfunc
(
getoption
(
ps)
)
=
I
NT
(
_N_/%
sysfunc
(
ge
toption
(
ps
)))
THEN
DO
;
%
DO
1
=
1%
TO&_FOOTn
;
option
&_oriopt
;
%
MEND
;
(责任编辑:郭海强)
put
"
fiOf3fsl6bO
&&_FOOT&parpard
”
;
%
END
;


发布评论