描述性统计 SAS 宏程序
支持以下编码环境:
描述性统计 SAS 宏程序
License: GNU Affero General Public License v3.0
描述性统计 SAS 宏程序
支持以下编码环境:
精简参数 VAR
的功能,以下调用方式仅对分类名称进行重命名操作:
VAR = SEX("" = "Missing" "男" = "Male" "女" = "Female")
分类的排序由参数 BY
控制
当参数 VAR
指定对不存在的分类名称重命名时,在日志中输出 WARNING
Descriptive-Statistics-Macro/gbk/quantify.sas
Lines 571 to 575 in dca88cc
下面的代码中,label_sql_expr
解析后含有百分号,SAS 会尝试继续解析 %
后的 )
,进而导致错误。
%sysfunc(quote(&label_sql_expr))
例如:试验组最大小数位数为1,对照组均为整数,则使用 quantify_multi
分组统计时,试验组和对照组的统计量输出格式不一致。
MLOGIC(QUALIFY): 准备结束执行。
MPRINT(QUALIFY_MULTI): ;
SYMBOLGEN: 宏变量 QUALIFY_EXIT_WITH_ERROR 解析为 FALSE
MLOGIC(QUALIFY_MULTI): %IF 条件 %bquote(&qualify_exit_with_error) = TRUE 为 FALSE
MLOGIC(QUALIFY_MULTI): %DO 循环的索引变量 I 当前为 3;循环将不再迭代。
MPRINT(QUALIFY_MULTI): data tmp_qualify_m_outdata;
SYMBOLGEN: 宏变量 GROUP_LEVEL_N 解析为 2
MLOGIC(QUALIFY_MULTI): %DO 循环正准备开始;索引变量为 I;起始值为 1;截止值为 2;增量值为 1。
SYMBOLGEN: 宏变量 I 解析为 1
MLOGIC(QUALIFY_MULTI): %DO 循环的索引变量 I 当前为 2;循环将再次迭代。
SYMBOLGEN: 宏变量 I 解析为 2
MLOGIC(QUALIFY_MULTI): %DO 循环的索引变量 I 当前为 3;循环将不再迭代。
MPRINT(QUALIFY_MULTI): merge temp_res_group_level_1 temp_res_group_level_2
tmp_qualify_m_res_sum ;
SYMBOLGEN: 宏变量 GROUP_LEVEL_N 解析为 2
MLOGIC(QUALIFY_MULTI): %DO 循环正准备开始;索引变量为 I;起始值为 1;截止值为 2;增量值为 1。
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: 宏变量 GROUP_LEVEL_1 解析为 "试验组"
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: 宏变量 GROUP_LEVEL_1 解析为 "试验组"
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: 宏变量 GROUP_LEVEL_1 解析为 "试验组"
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: 宏变量 GROUP_LEVEL_1 解析为 "试验组"
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 1
SYMBOLGEN: 宏变量 GROUP_LEVEL_1 解析为 "试验组"
MLOGIC(QUALIFY_MULTI): %DO 循环的索引变量 I 当前为 2;循环将再次迭代。
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: 宏变量 GROUP_LEVEL_2 解析为 "对照组"
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: 宏变量 GROUP_LEVEL_2 解析为 "对照组"
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: 宏变量 GROUP_LEVEL_2 解析为 "对照组"
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: 宏变量 GROUP_LEVEL_2 解析为 "对照组"
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: && 解析为 &。
SYMBOLGEN: 宏变量 I 解析为 2
SYMBOLGEN: 宏变量 GROUP_LEVEL_2 解析为 "对照组"
MLOGIC(QUALIFY_MULTI): %DO 循环的索引变量 I 当前为 3;循环将不再迭代。
MPRINT(QUALIFY_MULTI): label value_1 = "试验组" n_1 = "试验组"(频数) n_1_fmt =
"试验组"(频数格式化) rate_1 = "试验组"(频率) rate_1_fmt = "试验组"(频率格式化) value_2 =
"对照组" n_2 = "对照组"(频数) n_2_fmt = "对照组"(频数格式化) rate_2 = "对照组"(频率)
rate_2_fmt = "对照组"(频率格式化) value_sum = "合计" n_sum = "合计(频数)" n_sum_fmt =
"合计(频数格式化)" rate_sum = "合计(频率)" rate_sum_fmt = "合计(频率格式化)" item = "分类";
MPRINT(QUALIFY_MULTI): run;
WARNING: 输入数据集为变量“ITEM”指定了多个长度。 这会造成数据截断。
NOTE: 从数据集 WORK.TEMP_RES_GROUP_LEVEL_1. 读取了 2 个观测
NOTE: 从数据集 WORK.TEMP_RES_GROUP_LEVEL_2. 读取了 4 个观测
NOTE: 从数据集 WORK.TMP_QUALIFY_M_RES_SUM. 读取了 5 个观测
NOTE: 数据集 WORK.TMP_QUALIFY_M_OUTDATA 有 5 个观测和 17 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.02 秒
CPU 时间 0.01 秒
当指定参数 by
为一个 format,且在参数 var
上对分类进行重命名,如果数据集中缺少被重命名的分类,则该分类在输出数据集中将保持 format 中的值,而不是预期中重命名之后的值。
例如:
proc format;
value yn
1 = "Y"
2 = "N";
run;
%qualify_multi_test(indata = adsl,
var = wdfl("Y" = "是", "N" = "否"),
group = arm,
groupby = armn,
by = yn.,
outdata = out,
stat_format = (#rate = srate.),
label = '是否剔除, n(%)');
若数据集 adsl
中变量 wdfl
的值均为 N
,则输出结果中,本应经过重命名后显示为 “是” 的分类仍然显示为原始值 Y
:
以下参数调用方式会导致解析错误:
PATTERN = #N(#NMISS)|#MEAN(###STD)|#MEDIAN(#Q1, #Q3)|#MIN#|#|#max|#KURTOSIS, #SKEWNESS|(#LCLM, #UCLM)
NOTE: No statistics are computed for NHYW * RANDGUP_STD because NHYW has fewer than 2 nonmissing levels.
WARNING: No OUTPUT data set is produced for this table because a row or column variable has
fewer than 2 nonmissing levels and no statistics are computed.
新增参数 UID
,指定观测的唯一标识符变量。
UID = USUBJID
,将根据变量 USUBJID
对数据集进行去重,去重前统计结果为例次,去重后统计结果为例数UID = #NULL
,将不会对数据集进行去重,统计结果为例数,这是 默认行为。%qualify_multi_test
的行为将基于例数进行。
新增参数 BCHG = variable
Descriptive-Statistics-Macro/gbk/qualify.sas
Lines 464 to 469 in 540512a
%let N_format = &FREQ_format;
导致统计量 N
的输出格式跟随统计量 FREQ
,两者不存在双向同步。
当参数 UID
指定了唯一标识符变量时,支持指定 BY = #TIMES
按照例次排序。
%qualify
输出的 item
列长度是变化的;
%quantify
输出的 item
列长度固定为 200;
为什么会有这样的差异?
指定 var = age, pattern = %nrstr(#std|#stddev)
时,日志显示如下:
NOTE: 变量 AGE_StdDev 在文件“WORK.TMP_QUANTIFY_STAT”中已存在,改用 AGE_StdDev2。
原因:解析后的统计量传入 PROC MEANS
语句前没有进行去重。
Descriptive-Statistics-Macro/utf8/quantify.sas
Lines 523 to 529 in 7858c54
以下代码段没有创建宏变量 group_level_freq_1
:
Descriptive-Statistics-Macro/utf8/qualify_multi.sas
Lines 181 to 186 in 540512a
建议参考以下代码段:
Descriptive-Statistics-Macro/utf8/qualify_multi.sas
Lines 202 to 219 in 540512a
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.