单组单个定量指标的分析,输出均值、中位数、标准差、最大值、最小值、Q1、Q3 等指标。
Syntax : <libname.>dataset(dataset-options)
指定用于定量分析的数据集,可包含数据集选项
libname: 数据集所在的逻辑库名称
dataset: 数据集名称
dataset-options: 数据集选项,兼容 SAS 系统支持的所有数据集选项
Usage :
INDATA = ADSL
INDATA = SHKY.ADSL
INDATA = SHKY.ADSL(where = (FAS = "Y"))
Syntax : variable
指定定量分析的变量。
Warning
- 参数
VAR
不允许指定不存在于参数INDATA
指定的数据集中的变量; - 参数
VAR
不允许指定字符型变量;
Usage :
VAR = AGE
Syntax : row-1-specification<|row-2-specification<|...>>
指定需计算的统计量及统计量的输出模式,输出模式定义了统计量是如何进行组合的,以及统计量在输出数据集中的位置。
row-i-specification
表示输出数据集中第 i
+ 1
行(第 1 行固定为分析变量的标签)的统计量结果展示模式,输出数据集中的每一行均用一个 row-i-specification
进行定义,不同行的定义之间使用字符 |
隔开,其中 row-i-specification
的语法如下:
- string(s)
- #statistic-keyword
- <string(s)>#statistic-keyword<string(s)>
- <string(s)>#statistic-keyword-1<string(s)><#statistic-keyword-2><string(s)><...>
statistic-keyword
可以指定以下统计量:
统计量 | 简写 | 含义 |
---|---|---|
N | 例数 | |
NMISS | 缺失 | |
MEAN | 均值 | |
VAR | 方差 | |
STDDEV | STD | 标准差 |
STDERR | 标准误 | |
RANGE | 极差 | |
MEDIAN | 中位数 | |
MODE | 众数 | |
Q1 | 下四分位数 | |
Q3 | 上四分位数 | |
QRANGE | 四分位间距 | |
MIN | 最小值 | |
MAX | 最大值 | |
CV | 变异系数 | |
KURTOSIS | KURT | 峰度 |
SKEWNESS | SKEW | 偏度 |
LCLM | 均值的 95%置信下限 | |
UCLM | 均值的 95%置信上限 | |
SUM | 总和 | |
USS | 未校正平方和 | |
CSS | 校正平方和 | |
P1 | 第 1 百分位数 | |
P5 | 第 5 百分位数 | |
P10 | 第 10 百分位数 | |
P20 | 第 20 百分位数 | |
P25 | 第 25 百分位数 | |
P30 | 第 30 百分位数 | |
P40 | 第 40 百分位数 | |
P50 | 第 50 百分位数 | |
P60 | 第 60 百分位数 | |
P70 | 第 70 百分位数 | |
P75 | 第 75 百分位数 | |
P80 | 第 80 百分位数 | |
P90 | 第 90 百分位数 | |
P95 | 第 95 百分位数 | |
P99 | 第 99 百分位数 |
string(s)
可以是任意字符(串),若字符串含有字符 |
,则使用 #|
进行转义,若字符串含有字符 #
,则使用 ##
进行转义。
Default : %nrstr(#N(#NMISS)|#MEAN(#STD)|#MEDIAN(#Q1, #Q3)|#MIN, #MAX)
Important
- 若紧跟在 statistic-keyword 之后的 string(s) 的部分字符与 statistic-keyword 可以组合成另一个 statistic-keyword,为了避免混淆,应当在 statistic-keyword 后添加一个
.
,然后再添加 string(s)。例如:PATTERN = #N(#N.MISS)|#MEAN(#STD)
,其中#N.MISS
代表将计算例数与字符串MISS
进行连接; - 若 #statistic-keyword 之后的第一个字符是
.
,则需要使用..
才能正确表示。例如:PATTERN = #N(#N..MISS)|#MEAN(#STD)
; - 若 #statistic-keyword 之前的第一个字符是
.
,则需要使用..
才能正确表示。例如:PATTERN = ..#MEAN
; - 若 #statistic-keyword 之前的第一个字符是
#
,则需要使用##.
才能正确表示。例如:PATTERN = ##.#MEAN
; - 若未指定任何 statistic-keyword,则会直接输出原始字符串,而不进行任何统计量的计算。
Usage :
PATTERN = #N(#NMISS)|#MEAN±#STD|#MEDIAN(#Q1, #Q3)|#MIN, #MAX
PATTERN = #N(#NMISS)|#MEAN(##.#STD)|#MEDIAN(#Q1, #Q3)|#MIN#|#|#max|#KURTOSIS, #SKEWNESS|(#LCLM, #UCLM)
Syntax : <libname.>dataset(dataset-options)
指定统计结果输出的数据集,可包含数据集选项,用法同参数 INDATA。
输出数据集含有以下变量:
变量名 | 含义 |
---|---|
SEQ | 行号 |
ITEM | 指标名称 |
VALUE | 统计量在 PATTERN 指定的模式下的值 |
其中,变量 ITEM
和 VALUE
默认输出到 OUTDATA
指定的数据集中,其余变量默认隐藏。
Default : RES_&VAR
默认情况下,输出数据集的名称为 RES_
var
,其中 var
为参数 VAR 指定的变量名。
Tip
- 如需显示隐藏的变量,可使用数据集选项实现,例如:
OUTDATA = T1(KEEP = SEQ ITEM VALUE)
Usage :
OUTDATA = T1
OUTDATA = T1(KEEP = SEQ ITEM VALUE)
Syntax : <(> #statistic-keyword-1 = format-1 <, #statistic-keyword-2 = format-2 <, ...>> <)>
指定输出结果中统计量的输出格式。
Default : #AUTO
默认情况下,宏程序将根据参数 VAR 指定的变量在数据集中的具体值,决定各统计量的输出格式,具体如下:
统计量 | 简写 | 输出格式 w | 输出格式 d |
---|---|---|---|
N | 由 SAS 决定 | 由 SAS 决定 | |
NMISS | 由 SAS 决定 | 由 SAS 决定 | |
MEAN | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
VAR | int + min(dec + 2, 4) + 2 | min(dec + 2, 4) | |
STDDEV | STD | int + min(dec + 2, 4) + 2 | min(dec + 2, 4) |
STDERR | int + min(dec + 2, 4) + 2 | min(dec + 2, 4) | |
RANGE | int + min(dec, 4) + 2 | min(dec, 4) | |
MEDIAN | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
MODE | int + min(dec, 4) + 2 | min(dec, 4) | |
Q1 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
Q3 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
QRANGE | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
MIN | int + min(dec, 4) + 2 | min(dec, 4) | |
MAX | int + min(dec, 4) + 2 | min(dec, 4) | |
CV | int + min(dec + 2, 4) + 2 | min(dec + 2, 4) | |
KURTOSIS | KURT | int + min(dec + 3, 4) + 2 | min(dec + 3, 4) |
SKEWNESS | SKEW | int + min(dec + 3, 4) + 2 | min(dec + 3, 4) |
LCLM | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
UCLM | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
SUM | int + min(dec, 4) + 2 | min(dec, 4) | |
USS | int + min(dec + 2, 4) + 2 | min(dec + 2, 4) | |
CSS | int + min(dec + 2, 4) + 2 | min(dec + 2, 4) | |
P1 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P5 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P10 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P20 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P30 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P40 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P50 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P60 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P70 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P75 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P80 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P90 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P95 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
P99 | int + min(dec + 1, 4) + 2 | min(dec + 1, 4) | |
TS 1 | #AUTO 2 | 4 | |
P 1 | #AUTO 3 | - |
其中,int 表示变量 VAR 在数据集中使用默认输出格式打印后的整数部分的最大长度,dec 表示变量 VAR 在数据集中使用默认输出格式打印后的小数部分的最大长度,w.d 表示统计量的输出格式。
举例说明:
- 均值的输出格式 w.d 中,w 部分为实际整数位数 + 比实际小数位数多 1 位(若超过 4 位则只保留 4 位)+ 2(用于表示小数点和负号),d 部分为比实际小数位数多 1 位(若超过 4 位则只保留 4 位);
- 标准差的输出格式 w.d 中,w 部分为实际整数位数 + 比实际小数位数多 2 位(若超过 4 位则只保留 4 位)+ 2(用于表示小数点和负号),d 部分为比实际小数位数多 2 位(若超过 4 位则只保留 4 位);
- 最大值的输出格式 w.d 中,w 部分为实际整数位数 + 实际小数位数(若超过 4 位则只保留 4 位) + 2(用于表示小数点和负号),d 部分为实际小数位数(若超过 4 位则只保留 4 位);
Important
-
1 仅在宏
%quantify_multi_test
中可用; -
2 检验统计量输出格式的默认值为 w.d,其中:
-
w =
$\max(\lceil\log_{10}\left|s\right|\rceil, 1) + 6$ ,$s$ 表示检验统计量的值 - d = 4
-
w =
-
3 假设检验 P 值输出格式的默认值为
qtmt_pvalue.
,qtmt_pvalue.
由以下 PROC FORMAT 过程定义:proc format; picture qtmt_pvalue(round max = 7) low - < 0.0001 = "<0.0001"(noedit) other = "9.9999"; run;
当上述统计量输出格式无法满足实际需求时,可通过参数 STAT_FORMAT
重新指定某个统计量的输出格式。
Usage :
STAT_FORMAT = (#MEAN = 4.1, #STD = 5.2, #MEDIAN = 4.1, #Q1 = 4.1, #Q3 = 4.1)
STAT_FORMAT = (#MEAN = 4.1, #STD = 5.2, #MEDIAN = 4.1, #Q1 = 4.1, #Q3 = 4.1, #TS = 8.4, #P = pv.)
Special Usage :
STAT_FORMAT = #PREV
重复调用 %quantify()
时,如果第一次调用后即可确定后续调用时需要的统计量输出格式,可在第二次及之后调用 %quantify()
时,指定 STAT_FORMAT = #PREV
。
Caution
- 首次调用
quantify()
时,不可指定STAT_FORMAT = #PREV
。
Syntax : <(> #statisic-keyword-1 = string-1 <, #statistic-keyword-2 = string-2 <, ...>> <)>
指定输出结果中统计量的说明文字,该说明文字将会出现在输出数据集的 ITEM
列中。说明文字必须使用匹配的单(双)引号包围。
Default : #AUTO
默认情况下,绝大部分统计量的说明文字与参数 PATTERN 中对 statistic-keyword 描述的含义一致,Q1 和 Q3 是例外,具体各统计量的说明文字如下:
统计量 | 简写 | 说明文字 |
---|---|---|
N | 例数 | |
NMISS | 缺失 | |
MEAN | 均值 | |
VAR | 方差 | |
STDDEV | STD | 标准差 |
STDERR | 标准误 | |
RANGE | 极差 | |
MEDIAN | 中位数 | |
MODE | 众数 | |
Q1 | Q1 | |
Q3 | Q3 | |
QRANGE | 四分位间距 | |
MIN | 最小值 | |
MAX | 最大值 | |
CV | 变异系数 | |
KURTOSIS | KURT | 峰度 |
SKEWNESS | SKEW | 偏度 |
LCLM | 均值的 95%置信下限 | |
UCLM | 均值的 95%置信上限 | |
SUM | 总和 | |
USS | 未校正平方和 | |
CSS | 校正平方和 | |
P1 | 第 1 百分位数 | |
P5 | 第 5 百分位数 | |
P10 | 第 10 百分位数 | |
P20 | 第 20 百分位数 | |
P30 | 第 30 百分位数 | |
P40 | 第 40 百分位数 | |
P50 | 第 50 百分位数 | |
P60 | 第 60 百分位数 | |
P70 | 第 70 百分位数 | |
P75 | 第 75 百分位数 | |
P80 | 第 80 百分位数 | |
P90 | 第 90 百分位数 | |
P95 | 第 95 百分位数 | |
P99 | 第 99 百分位数 |
Usage :
STAT_NOTE = (#N = "靶区数", #MEAN = "平均值")
Syntax : string
指定输出结果中第一行显示的标签字符串,该字符串必须使用匹配的单(双)引号包围。
如果指定的 LABEL
中含有不匹配的引号,例如,需要指定 LABEL
为一个单引号,可以选择以下传参方式:
LABEL = "'"
但不能使用以下传参方式:
LABEL = ''''
这与通常情况下被成对的单引号包围的内部连续两个单引号被视为一个单引号的语法略有不同。
Default : #AUTO
默认情况下,宏程序将自动获取变量 VAR
的标签,若标签为空,则使用变量 VAR
的变量名作为标签。
Usage :
LABEL = "年龄(岁)"
Syntax : string
指定输出结果各分类的缩进字符串,该字符串必须使用匹配的单(双)引号包围。
如果指定的 INDENT
中含有不匹配的引号,例如,需要指定 INDENT
为一个单引号,可以选择以下传参方式:
INDENT = "'"
但不能使用以下传参方式:
INDENT = ''''
这与通常情况下被成对的单引号包围的内部连续两个单引号被视为一个单引号的语法略有不同。
Default : #AUTO
默认情况下,各分类前使用 4 个英文空格作为缩进字符。
Tip
- 可以使用 RTF 控制符控制缩进,例如:五号字体下缩进 2 个中文字符,可指定参数
INDENT = "\li420 "
Usage :
INDENT = "\li420 "
Syntax : TRUE | FALSE
指定是否删除宏程序运行过程生成的中间数据集。
Default : TRUE
默认情况下,宏程序会自动删除运行过程生成的中间数据集。
Note
- 此参数用于开发者调试,一般无需关注。
%quantify();
%quantify(help);
%quantify(indata = adsl, var = age);
%quantify(indata = adsl, var = age,
pattern = %nrstr(#N(#NMISS)#Q1|#MEAN(##.#STD)|#MEDIAN(#Q1, #Q3)|#MIN#|#|#max));
上述例子中,使用参数 PATTERN
改变了默认的统计量输出模式,第二行额外输出了统计量 Q1
,第三行使用 ##
对 #
进行转义,最后一行最小值和最大值使用 ||
进行分隔,同样使用 #|
对 |
进行转义。
%quantify(indata = adsl, var = age, outdata = t1(keep = seq item value));
%quantify(indata = adsl, var = age,
stat_format = (#MEAN = 4.1, #STD = 5.2, #MEDIAN = 4.1, #Q1 = 4.1, #Q3 = 4.1));
%quantify(indata = adsl, var = age,
stat_note = (#N = "靶区数", #MEAN = "平均值", #Q1 = "下四分位数", #Q3 = "上四分位数"));
%quantify(indata = adsl, var = age,
stat_format = (#MEAN = 4.1, #STD = 5.2, #MEDIAN = 4.1, #Q1 = 4.1, #Q3 = 4.1), label = "年龄(岁)");
%quantify(indata = adsl, var = age,
stat_format = (#MEAN = 4.1, #STD = 5.2, #MEDIAN = 4.1, #Q1 = 4.1, #Q3 = 4.1), indent = "\li420 ");
上述例子中,使用参数 INDENT
指定了缩进字符串,如需使 RTF 控制符生效,需要在传送至 ODS 的同时,指定相关元素的 PROTECTSPECIALCHAR
属性值为 OFF
。