全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
13908 22
2013-11-23
悬赏 100 个论坛币 已解决
各位SAS大侠,本人是临床小硕一枚,最近做单因素生存分析,在网上搜索了宏程序,觉得很好,https://winshipbbisr.emory.edu/Software_macro.html;下面是例子:
复制代码

但是在sas9.3 (本论坛下载版本)跑的时候报错,结果部分能出来,但是不能自动生成word文档。错误日志:NOTE: Copyright (c)2002-2010 by SAS Institute Inc., Cary, NC, USA.

NOTE: SAS (r)Proprietary Software 9.3 (TS1M0 DBCS3060)

      Licensed to UHASSELT STUDENT  - 64BIT CLIENT, Site 70141618.

NOTE: 该会话正在平台 X64_7PRO  上执行。

NOTE: “SAS 初始化”所用时间:

      实际时间          8.96 秒

      CPU 时间          1.71 秒

1    DATA analysis;

2    input id os_censor Sex $ Age duration osprogress $ trt $;

3    LABEL os = 'Overall Survival (months)'

4    progress = 'Progression'

5    trt = 'Treatment'

6    duration = 'Duration of Radiation';

7    DATALINES;

NOTE: 数据集 WORK.ANALYSIS 有 20 个观测和 8 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.42 秒

      CPU 时间          0.04 秒

28   ;

29   run;

30   %include "D:\mymacro\UNI_PHREGV16.sas";

449  TITLE 'Table 3 Univariate Survival Analysis';

450  %UNI_PHREG(dataset = analysis,

451  event = os,

452  censor = os_censor,

453  clist = trt sex,

454  nlist = Age duration,

455  outpath = C:\,

456  fname = Table 3 Univariate Survival Analysis,

457  pha = T,

458  orientation = PORTRAIT);

NOTE: “PROCEDURE SQL”所用时间(总处理时间):

      实际时间          0.27 秒

      CPU 时间          0.03 秒

NOTE: “PROCEDURE SQL”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 正在写入 HTML Body(主体)文件: sashtml.htm

NOTE: 数据集 WORK._DATASETLIST 有 1 个观测和 5 个变量。

NOTE: “PROCEDURE DATASETS”所用时间(总处理时间):

      实际时间          0.19 秒

      CPU 时间          0.07 秒

NOTE: “PROCEDURE SQL”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 数据集 WORK._OPTIONS 有 263 个观测和 2 个变量。

NOTE: “PROCEDURE OPTSAVE”所用时间(总处理时间):

      实际时间          0.04 秒

      CPU 时间          0.01 秒

WARNING: 未创建输出“'One-Way Frequencies'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

NOTE: 从数据集 WORK.ANALYSIS. 读取了 20 个观测

      WHERE os not = .;

NOTE: “PROCEDURE FREQ”所用时间(总处理时间):

      实际时间          0.15 秒

      CPU 时间          0.03 秒

ERROR: 文件“WORK._FREQ.DATA”不存在。

NOTE: 数值已转换为字符值,位置:(行:列)。

      1:1

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._FREQC 可能不完整。该步停止时,共有 0 个观测和 4 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.05 秒

      CPU 时间          0.01 秒

NOTE: Convergencecriterion (GCONV=1E-8) satisfied.

WARNING: 未创建输出“'Number of observations'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Test of Global Null Hypothesis'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Maximum Likelihood Estimates of Model Parameters'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Supremum Test for Proportional Hazards Assumption'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

NOTE: “PROCEDURE PHREG”所用时间(总处理时间):

      实际时间          2.98 秒

      CPU 时间          0.53 秒

ERROR: 文件“WORK._MLEC.DATA”不存在。

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._MLEC 可能不完整。该步停止时,共有 0 个观测和 2 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: 文件“WORK._SCORE.DATA”不存在。

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._SCORE 可能不完整。该步停止时,共有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: 文件“WORK._PHAC.DATA”不存在。

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._PHAC 可能不完整。该步停止时,共有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._PHAC. 读取了 0 个观测

NOTE: 数据集 WORK._FREQC 有 0 个观测和 5 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.01 秒

NOTE: 输入数据集为空。

NOTE: 数据集 WORK._FREQC 有 0 个观测和 5 个变量。

NOTE: “PROCEDURE SORT”所用时间(总处理时间):

      实际时间          0.01 秒

      CPU 时间          0.00 秒

ERROR: 变量 ClassVal0 不在文件“WORK._MLEC”中。

ERROR: 文件“WORK._MLEC”的 DROP、KEEP 或 RENAME 选项无效。

NOTE: 由于出错,SAS 系统停止处理该步。

NOTE: “PROCEDURE SORT”所用时间(总处理时间):

      实际时间          0.03 秒

      CPU 时间          0.00 秒

ERROR: BY 变量 Level 不在输入数据集 WORK._MLEC 中。

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._FREQCC 可能不完整。该步停止时,共有 0个观测和 7 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.01 秒

      CPU 时间          0.00 秒

NOTE: 输入数据集为空。

NOTE: 数据集 WORK._FREQCC 有 0 个观测和 7 个变量。

NOTE: “PROCEDURE SORT”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: 以下这些列在起作用的表中没有找到: test.

NOTE: 由于出错,SAS 系统停止处理该步。

NOTE: “PROCEDURE SQL”所用时间(总处理时间):

      实际时间          0.01 秒

      CPU 时间          0.00 秒

22: 无法确定 LINE 和 COLUMN。

NOTE 242-205: NOSPOOL 已打开。用 OPTION SPOOL 重新运行可恢复出错的LINE 和 COLUMN。

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 HazardRatio。

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 HRLowerCL。

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 HRUpperCL。

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._FREQ1 可能不完整。该步停止时,共有 0 个观测和 7 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.04 秒

      CPU 时间          0.00 秒

WARNING: 未创建输出“'One-Way Frequencies'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

NOTE: 从数据集 WORK.ANALYSIS. 读取了 20 个观测

      WHERE os not = .;

NOTE: “PROCEDURE FREQ”所用时间(总处理时间):

      实际时间          0.01 秒

      CPU 时间          0.03 秒

ERROR: 文件“WORK._FREQ.DATA”不存在。

NOTE: 数值已转换为字符值,位置:(行:列)。

      1:1

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._FREQC 可能不完整。该步停止时,共有 0 个观测和 4 个变量。

WARNING: 数据集 WORK._FREQC 由于该步已停止,而没有被替换。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.01 秒

NOTE: Convergencecriterion (GCONV=1E-8) satisfied.

WARNING: 未创建输出“'Number of observations'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Test of Global Null Hypothesis'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Maximum Likelihood Estimates of Model Parameters'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Supremum Test for Proportional Hazards Assumption'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

NOTE: “PROCEDURE PHREG”所用时间(总处理时间):

      实际时间          0.35 秒

      CPU 时间          0.09 秒

NOTE: 从数据集 WORK._MLEC. 读取了 0 个观测

NOTE: 数据集 WORK._MLEC 有 0 个观测和 2 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._SCORE. 读取了 0 个观测

NOTE: 数据集 WORK._SCORE 有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._PHAC. 读取了 0 个观测

NOTE: 数据集 WORK._PHAC 有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._PHAC. 读取了 0 个观测

NOTE: 数据集 WORK._FREQC 有 0 个观测和 5 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 输入数据集为空。

NOTE: 数据集 WORK._FREQC 有 0 个观测和 5 个变量。

NOTE: “PROCEDURE SORT”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: 变量 ClassVal0 不在文件“WORK._MLEC”中。

ERROR: 文件“WORK._MLEC”的 DROP、KEEP 或 RENAME 选项无效。

NOTE: 由于出错,SAS 系统停止处理该步。

NOTE: “PROCEDURE SORT”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: BY 变量 Level 不在输入数据集 WORK._MLEC 中。

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._FREQCC 可能不完整。该步停止时,共有 0个观测和 7 个变量。

WARNING: 数据集 WORK._FREQCC 由于该步已停止,而没有被替换。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.01 秒

NOTE: 输入数据集已排序,故未进行排序。

NOTE: “PROCEDURE SORT”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: 以下这些列在起作用的表中没有找到: test.

NOTE: 由于出错,SAS 系统停止处理该步。

NOTE: “PROCEDURE SQL”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

22: 无法确定 LINE 和 COLUMN。

NOTE 242-205: NOSPOOL 已打开。用 OPTION SPOOL 重新运行可恢复出错的LINE 和 COLUMN。

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 HazardRatio。

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 HRLowerCL。

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 HRUpperCL。

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._FREQ2 可能不完整。该步停止时,共有 0 个观测和 7 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.01 秒

NOTE: 从数据集 WORK._FREQ1. 读取了 0 个观测

NOTE: 从数据集 WORK._FREQ2. 读取了 0 个观测

NOTE: 数据集 WORK._FREQ_ALL 有 0 个观测和 8 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.01 秒

NOTE: Convergencecriterion (GCONV=1E-8) satisfied.

WARNING: 未创建输出“'Number of observations'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Test of Global Null Hypothesis'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Maximum Likelihood Estimates of Model Parameters'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Supremum Test for Proportional Hazards Assumption'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

NOTE: “PROCEDURE PHREG”所用时间(总处理时间):

      实际时间          0.32 秒

      CPU 时间          0.12 秒

NOTE: 从数据集 WORK._MLEC. 读取了 0 个观测

NOTE: 数据集 WORK._MLEC 有 0 个观测和 2 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._SCORE. 读取了 0 个观测

NOTE: 数据集 WORK._SCORE 有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._PHAC. 读取了 0 个观测

NOTE: 数据集 WORK._PHAC 有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: 以下这些列在起作用的表中没有找到: test.

ERROR: 以下这些列在起作用的表中没有找到: HazardRatio.

ERROR: 以下这些列在起作用的表中没有找到: HRLowerCL.

ERROR: 以下这些列在起作用的表中没有找到: HRUpperCL.

NOTE: 没有选择任何行。

NOTE: 没有选择任何行。

ERROR: 文件“WORK._NOBS.DATA”不存在。

NOTE: 由于出错,SAS 系统停止处理该步。

NOTE: “PROCEDURE SQL”所用时间(总处理时间):

      实际时间          0.04 秒

      CPU 时间          0.01 秒

NOTE: 从数据集 WORK.ANALYSIS. 读取了 20 个观测

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.03 秒

      CPU 时间          0.00 秒

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

77    covariate $256. Level $71.;             covariate ="&VV";             level =' ';

77 !     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

                     -

                     22

77 !         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 N_OBS。

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

77    covariate $256. Level $71.;             covariate ="&VV";             level =' ';

77 !     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

                                                            -

                                                            22

77 !         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

77    covariate $256. Level $71.;             covariate ="&VV";             level = ' ';

77 !     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

                                                                                        -

                                                                                        22

77 !         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 HR。

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

77    covariate $256. Level $71.;             covariate ="&VV";             level =' ';

77 !     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

77 !         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

                         -

                         22

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 HR_LB。

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

77    covariate $256. Level $71.;             covariate ="&VV";             level = ' ';

77 !     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

77 !         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

                                                        -

                                                         22

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 HR_UB。

NOTE: 由调用宏“UNI_PHREG”生成行。

78                ProbChiSq = &hrp;

                              -

                              22

WARNING: 没有解析符号引用 HRP。

NOTE: 由调用宏“UNI_PHREG”生成行。

80                    pvalue = &assump;

                                      -

                                      22

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._SUMMARY1 可能不完整。该步停止时,共有0 个观测和 10 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.07 秒

      CPU 时间          0.07 秒

NOTE: Convergencecriterion (GCONV=1E-8) satisfied.

WARNING: 未创建输出“'Number of observations'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Test of Global Null Hypothesis'”。请确保输出对象名称、标签或路径拼写正确。

         还需确保使用了相应的过程选项来生成请求的输出对象。如,确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Maximum Likelihood Estimates of Model Parameters'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

WARNING: 未创建输出“'Supremum Test for Proportional Hazards Assumption'”。请确保输出对象名称、

         标签或路径拼写正确。还需确保使用了相应的过程选项来生成请求的输出对象。如,

         确保没有使用 NOPRINT 选项。

NOTE: “PROCEDURE PHREG”所用时间(总处理时间):

      实际时间          0.35 秒

      CPU 时间          0.14 秒

NOTE: 从数据集 WORK._MLEC. 读取了 0 个观测

NOTE: 数据集 WORK._MLEC 有 0 个观测和 2 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._SCORE. 读取了 0 个观测

NOTE: 数据集 WORK._SCORE 有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK._PHAC. 读取了 0 个观测

NOTE: 数据集 WORK._PHAC 有 0 个观测和 1 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

ERROR: 以下这些列在起作用的表中没有找到: test.

ERROR: 以下这些列在起作用的表中没有找到: HazardRatio.

ERROR: 以下这些列在起作用的表中没有找到: HRLowerCL.

ERROR: 以下这些列在起作用的表中没有找到: HRUpperCL.

NOTE: 没有选择任何行。

NOTE: 没有选择任何行。

ERROR: 文件“WORK._NOBS.DATA”不存在。

NOTE: 由于出错,SAS 系统停止处理该步。

NOTE: “PROCEDURE SQL”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 从数据集 WORK.ANALYSIS. 读取了 20 个观测

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

106   covariate $256. Level $71.;             covariate ="&VV";             level =' ';

106!     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

                     -

                     22

106!         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 N_OBS。

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

106   covariate $256. Level $71.;             covariate ="&VV";             level =' ';

106!     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

                                                            -

                                                             22

106!         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

106   covariate $256. Level $71.;             covariate = "&VV";             level = ' ';

106!     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

                                                                                        -

                                                                                         22

106!         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 HR。

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

106   covariate $256. Level $71.;             covariate ="&VV";             level =' ';

106!     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

106!         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

                         -

                         22

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 HR_LB。

NOTE 137-205: 由调用宏“UNI_PHREG”生成行。

106   covariate $256. Level $71.;             covariate = "&VV";             level = ' ';

106!     Frequency = &N_obs;             logrankp = &logrankp;             HazardRatio = &hr;

106!         HRLowerCL = &hr_lb;             HRUpperCL = &hr_ub;

                                                        -

                                                        22

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

WARNING: 没有解析符号引用 HR_UB。

NOTE: 由调用宏“UNI_PHREG”生成行。

107               ProbChiSq = &hrp;

                              -

                              22

WARNING: 没有解析符号引用 HRP。

NOTE: 由调用宏“UNI_PHREG”生成行。

109                   pvalue = &assump;

                                      -

                                      22

ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,

              INPUT, PUT.

NOTE: 由于出错,SAS 系统停止处理该步。

WARNING: 数据集 WORK._SUMMARY2 可能不完整。该步停止时,共有0 个观测和 10 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.02 秒

      CPU 时间          0.03 秒

NOTE: 从数据集 WORK._SUMMARY1. 读取了 0 个观测

NOTE: 从数据集 WORK._SUMMARY2. 读取了 0 个观测

NOTE: 数据集 WORK._SUMMARY_ALL 有 0 个观测和 11 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.01 秒

NOTE: 从数据集 WORK._FREQ_ALL. 读取了 0 个观测

NOTE: 从数据集 WORK._SUMMARY_ALL. 读取了 0 个观测

NOTE: 数据集 WORK._REPORT 有 0 个观测和 11 个变量。

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.05 秒

      CPU 时间          0.01 秒

NOTE: STYLE'Styles.Tables' 已保存至: WORK.TEMPLAT

NOTE: “PROCEDURE TEMPLATE”所用时间(总处理时间):

      实际时间          0.07 秒

      CPU 时间          0.01 秒

NOTE: 从数据集 WORK.ANALYSIS. 读取了 20 个观测

NOTE: “DATA 语句”所用时间(总处理时间):

      实际时间          0.00 秒

      CPU 时间          0.00 秒

NOTE: 正在写入 RTF Body(主体)文件: C:\Table 3Univariate Survival Analysis 23NOV13.DOC

NOTE: 数据集 WORK._REPORT 中没有观测。

NOTE: 输入数据集中没有观测。

NOTE: “PROCEDURE REPORT”所用时间(总处理时间):

      实际时间          0.16 秒

      CPU 时间          0.01 秒

NOTE: “PROCEDURE OPTLOAD”所用时间(总处理时间):

      实际时间          0.51 秒

      CPU 时间          0.35 秒

NOTE: 正在保存 WORK.ANALYSIS (memtype=DATA)。

NOTE: 正在删除 WORK._DATASETLIST (memtype=DATA)。

NOTE: 正在删除 WORK._FREQ1 (memtype=DATA)。

NOTE: 正在删除 WORK._FREQ2 (memtype=DATA)。

NOTE: 正在删除 WORK._FREQC (memtype=DATA)。

NOTE: 正在删除 WORK._FREQCC (memtype=DATA)。

NOTE: 正在删除 WORK._FREQ_ALL (memtype=DATA)。

NOTE: 正在删除 WORK._MLEC (memtype=DATA)。

NOTE: 正在删除 WORK._OPTIONS (memtype=DATA)。

NOTE: 正在删除 WORK._PHAC (memtype=DATA)。

NOTE: 正在删除 WORK._REPORT (memtype=DATA)。

NOTE: 正在删除 WORK._SCORE (memtype=DATA)。

NOTE: 正在删除 WORK._SUMMARY1 (memtype=DATA)。

NOTE: 正在删除 WORK._SUMMARY2 (memtype=DATA)。

NOTE: 正在删除 WORK._SUMMARY_ALL (memtype=DATA)。

NOTE: “PROCEDURE DATASETS”所用时间(总处理时间):

      实际时间          0.09 秒

      CPU 时间          0.04 秒

459  TITLE;;本人计算机系统为win7 64位;本人sas基础薄弱,不能弄清到底问题出在哪,还劳烦请高手解答啊。给程序作者email过,没有回音。宏程序没法上传,还劳烦各位到网站去下载,也很快。

最佳答案

邓贵大 查看完整内容

try to replace ODS OUTPUT 'One-Way Frequencies' = _FREQ; with ODS OUTPUT OneWayFreqs = _FREQ; According to http://support.sas.com/documenta ... at_freq_sect022.htm, you can reference the one-way frequencies by either name or description, but I'm just afraid ... The ODS table names for PROC PHREG are here http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#stat ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-11-23 19:26:39
try to replace
ODS OUTPUT 'One-Way Frequencies' = _FREQ;
with
ODS OUTPUT OneWayFreqs = _FREQ;
According to http://support.sas.com/documenta ... at_freq_sect022.htm, you can reference the one-way frequencies by either name or description, but I'm just afraid ...

The ODS table names for PROC PHREG are here
http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_phreg_a0000000716.htm

It's also a good idea to put the
ODS TRACE ON;
statement before everything to double check the ODS table names.

Also per my very limited experience, sometimes you have to place the ODS OUTPUT statement after its PROC  to make sure the ODS tables is generated.

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-23 19:57:17
把你用的宏程序贴上来
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-23 20:11:40
Imasasor 发表于 2013-11-23 19:57
把你用的宏程序贴上来
%MACRO UNI_PHREG(DATASET=, EVENT=, CENSOR=, CLIST =, CREFLIST=, NLIST=, DOC=T, OUTPATH=,
     FNAME=, PHA=F, LOGRANK=T, ORIENTATION=PORTRAIT, DEBUG=F);

   %local I __MACRO_ERR WORK_SETS CHECK REFVAR EVENTVV LOGRANKP C assump;

   /* Capitalize */
   %let pha = %UPCASE(&pha);
   %let debug = %UPCASE(&debug);
   %let logrank = %UPCASE(&logrank);
   %let doc = %UPCASE(&doc);

   %IF &PHA = TRUE %then %let PHA = T;

   /* Count number of variables */
   %if &clist = %STR() %then %do;
      %let clist_cnt = 0;
   %end;
   %else %do;
      %let clist_cnt = %sysfunc(countw(&CLIST));
   %end;

   /* Initialize error flag */
   %let __Macro_Err = 0;

   /* Check for outcome variable names that are too long */
   %DO i = 1 %to &clist_cnt;
      %IF %LENGTH(%SCAN(&CLIST, &i)) > 30 %then %do;
         %put ERROR: Variable name %SCAN(&CLIST, &i) must be less than 31 characters.;
           %let __Macro_Err=1;
       %END;
   %END;

   /* Make sure that each categorical variable has at least two non-missing values */
   %do i = 1 %to &clist_cnt;
      PROC SQL noprint;
         select count(distinct %SCAN(&clist, &i)) into :check
         from &dataset
         where MISSING(%SCAN(&clist, &i)) = 0;
      QUIT;

       %if &check <= 1 %then %do;
          %put ERROR: The variable %SCAN(&clist, &i) has less than two non-missing levels.  Please remove from CLIST.;
           %let __Macro_Err=1;
       %end;
   %end;

   %if &__Macro_Err. %then %do;
      data _null_;
         abort 3;
      run;
   %end;

   /* Get list of data sets in work library to avoid deletion later */
   ODS OUTPUT Members(nowarn)=_DataSetList;
   PROC DATASETS lib=work memtype=data;
   QUIT;

   /* If there are data sets in the work library */
   %if %sysfunc(exist(_DataSetList)) %then %do;
      PROC SQL noprint;
         select Name
         into :work_sets separated by ' '
         from _DataSetList;
      quit;
   %end;
   %else %do;
      %let work_sets =;
   %end;

   /* Save current options */
   PROC OPTSAVE out=_options;
   RUN;

   *CHARACTER VARIABLES ;

   %IF &CLIST NE  %THEN %DO;
      %LET C = 1;

       %DO %UNTIL (%SCAN(&CLIST, &C) =   );
          %LET CVAR = %SCAN(&CLIST, &C);
           %LET REFVAR = %SCAN(&CREFLIST,&C,*);

           /* If no reference categories were provided then use the default */
         %if %sysevalf(%superq(REFVAR)=,boolean) %then %do;
            %let refvar = &cvar;
         %end;

         ODS OUTPUT 'One-Way Frequencies' = _FREQ;
         PROC FREQ DATA=&dataset ORDER=internal;
            TABLE &CVAR;
            WHERE &EVENT NE .;
         RUN;  

         DATA _FREQC;
            SET _FREQ ;
            LENGTH Covariate $256. Level $71.;
            Covariate = label(&CVAR);
            level = LEFT(F_&CVAR);
            N =  Frequency;
            KEEP Covariate level Frequency N;
         RUN;

         ODS OUTPUT %IF &PHA = T %then %do; "Supremum Test for Proportional Hazards Assumption" = _phac %end;
               "Maximum Likelihood Estimates of Model Parameters" = _mlec
               "Test of Global Null Hypothesis" = _score "Number of observations" = _nobs;
         proc phreg data=&dataset;
              class &refvar/order=internal;
               model &EVENT*&CENSOR(0) = &CVAR/rl;
               %if &PHA = T %then %do;
               assess ph/resample seed=1;
               %end;
         Run;

         data _mlec;
            set _mlec;

            /* Preserve order */
            order2 = _n_;
            format ProbChiSq;
         run;

         data _score;set _score;format ProbChiSq;run;

         %IF &PHA = T %THEN %DO;
              
            data _phac;set _phac; format pvalue;run;

               /* Merge on PHA check */
               DATA _freqc;
                  if _n_ = 1 then set _phac;
                  set _freqc;
               RUN;

         %end;

         PROC SORT DATA = _freqc;
            by level;
         RUN;
         PROC SORT DATA =  _mlec (rename=(ClassVal0=level));
            by level;
         RUN;

         data _freqcc;
            merge _freqc _mlec;
            by level;

            /* Make sure reference level comes last */
            if order2 = . then order2 = 999;
         run;

         /* Return to order */
         PROC SORT DATA = _freqcc;
            by order2;
         RUN;

         proc sql noprint; select ProbChiSq into: logrankp from _score where test ="Score";quit;

         data _freq&C;
            set _freqcc;
            logrankp= &logrankp;
            /* Preserve order */
            order2 = &c;
            keep order2 Covariate Level Frequency logrankp HazardRatio HRLowerCL HRUpperCL ProbChiSq  %IF &PHA = T %then %do; pvalue %end;;
         run;
               
           %LET C = %EVAL(&C+1);
       %END;
       %let C= %eval(&C - 1) ;

      Data _freq_all;
         set _FREQ1 - _FREQ&C;
           order = 1;
      run;
   %END;

   *NUMERIC VARIABLES ;
   %IF &NLIST NE  %THEN %DO;
         
      %LET N = 1;

      %DO %UNTIL (%SCAN(&NLIST, &N) =   );
         %LET NVAR = %SCAN(&NLIST, &N);

         ODS OUTPUT
          %IF &PHA = T %then %do; "Supremum Test for Proportional Hazards Assumption" = _phac %end;
          "Maximum Likelihood Estimates of Model Parameters" = _mlec
          "Test of Global Null Hypothesis" = _score "Number of observations" = _nobs;
         proc phreg data=&DATASET;
            model &EVENT*&CENSOR(0) = &NVAR/rl;
            %IF &PHA = T %then %do; assess ph/resample seed=1; %end;
         run;

         data _mlec;set _mlec; format  ProbChiSq;run;
         data _score;set _score;format ProbChiSq;run;

         %IF &PHA = T %then %do;
            data _phac;set _phac; format pvalue;run;
         %end;

         proc sql noprint;
            select ProbChiSq into: logrankp from _score where test ="Score";
            select HazardRatio into: hr from _mlec;
            select HRLowerCL into: hr_lb from _mlec;
            select HRUpperCL into: hr_ub from _mlec;
            select ProbChiSq into: hrp from _mlec;
            %IF &PHA = T %then %do;
               select pvalue into: assump from _phac;
            %end;
            select SumFreqsUsed into: N_obs from _nobs;
         quit;

         data _NULL_;
            set &dataset;
            call symput('VV', put(label(&NVAR),$256.));
         run;

         
         data _summary&N;
            length covariate $256. Level $71.;
            covariate = "&VV";
            level = ' ';
            Frequency = &N_obs;
            logrankp = &logrankp;
            HazardRatio = &hr;
            HRLowerCL = &hr_lb;
            HRUpperCL = &hr_ub;
            ProbChiSq = &hrp;
            %IF &PHA = T %THEN %DO;
               pvalue = &assump;
            %end;
            /* Preserve order */
            order2 = &n;

            keep order2 Covariate level Frequency logrankp HazardRatio HRLowerCL HRUpperCL
               ProbChiSq %IF &PHA = T %THEN %DO; pvalue %end;;
         run;
               
         %LET N = %EVAL(&N+1);
      %END;

      %LET N = %EVAL(&N-1);

      DATA _summary_all;
         SET _summary1-_summary&N;
         order = 2;
      RUN;
%END;

%IF &CLIST NE  and &NLIST NE  %THEN %DO; Data _report ; set _freq_all _summary_all;run; %end;
%IF &CLIST EQ  and &NLIST NE  %THEN %DO; Data _report ; set _summary_all;run; %end;
%IF &CLIST NE  and &NLIST EQ  %THEN %DO; Data _report ; set _freq_all ;run; %end;

*---- table template -----;  
ODS PATH WORK.TEMPLAT(UPDATE)
SASUSR.TEMPLAT(UPDATE) SASHELP.TMPLMST(READ);

PROC TEMPLATE;
DEFINE STYLE STYLES.TABLES;
NOTES "MY TABLE STYLE";
PARENT=STYLES.MINIMAL;

     STYLE SYSTEMTITLE /FONT_SIZE = 12pt     FONT_FACE = "TIMES NEW ROMAN";

     STYLE HEADER /
           FONT_FACE = "TIMES NEW ROMAN"
            CELLPADDING=8
            JUST=C
            VJUST=C
            FONT_SIZE = 10pt
           FONT_WEIGHT = BOLD;

     STYLE TABLE /
            FRAME=HSIDES            /* outside borders: void, box, above/below, vsides/hsides, lhs/rhs */
           RULES=GROUP              /* internal borders: none, all, cols, rows, groups */
           CELLPADDING=6            /* the space between table cell contents and the cell border */
            CELLSPACING=6           /* the space between table cells, allows background to show */
            JUST=C
            FONT_SIZE = 10pt
           BORDERWIDTH = 0.5pt;  /* the width of the borders and rules */

     STYLE DATAEMPHASIS /
           FONT_FACE = "TIMES NEW ROMAN"
           FONT_SIZE = 10pt
           FONT_WEIGHT = BOLD;

     STYLE DATA /
           FONT_FACE = "TIMES NEW ROMAN"
           FONT_SIZE = 10pt;

     STYLE SYSTEMFOOTER /FONT_SIZE = 9pt FONT_FACE = "TIMES NEW ROMAN" JUST=C;
END;

RUN;

   **** PRINT THE TABLE ************;
   data _NULL_;
      set &dataset;
      call symput('eventvv', put(label(&EVENT),$256.));
   run;

   OPTIONS ORIENTATION=&ORIENTATION MISSING = "-" NODATE;
   %if &doc = T %then %do;
      ODS RTF STYLE=TABLES file= "&OUTPATH.&FNAME &SYSDATE..DOC";
   %end;
      PROC REPORT DATA=_report HEADLINE HEADSKIP CENTER SPANROWS LS=256
          STYLE(REPORT)={JUST=CENTER} SPLIT='~' nowd;
         COLUMNS order order2 Covariate  Level frequency  
               ("&eventvv" '--------------------------------------------------------'( HazardRatio
               HRLowerCL HRUpperCL ProbChiSq
               %IF &PHA = T %then %do; pvalue %end;
               %if &logrank = T %then %do; logrankp %end;));
           DEFINE order/order order=internal noprint;
           DEFINE order2/order order=internal noprint;
         DEFINE Covariate/ order order=data  "Covariate"  STYLE(COLUMN) = {JUST = L};
         DEFINE Level/ DISPLAY   "Level"     STYLE(COLUMN) = {JUST =L};
         DEFINE frequency/ DISPLAY   "N"     STYLE(COLUMN) = {JUST = C};               
         DEFINE HazardRatio/DISPLAY    "Hazard Ratio"               STYLE(COLUMN) = {JUST = C}  FORMAT=10.3;
           DEFINE HRLowerCL /DISPLAY '95%CI~Low'  STYLE(COLUMN) = {JUST = C}  FORMAT=10.3;
           DEFINE HRUpperCL /DISPLAY  '95%CI~Up' STYLE(COLUMN) = {JUST = C}  FORMAT=10.3;
           DEFINE ProbChiSq/DISPLAY    "HR P-value"          STYLE(COLUMN) = {JUST = C}  FORMAT=PVALUE5.3;
           %IF &PHA = T %then %do;
            DEFINE pvalue/order  "Assumption P-value"  STYLE(COLUMN) = {JUST = C} FORMAT=PVALUE5.3;
         %end;
           %if &logrank = T %then %do;
            DEFINE logrankp/ order "Log-rank P-value" STYLE(COLUMN) = {JUST = C}  FORMAT=PVALUE5.3;
           %end;

           %IF &PHA = T %then %do;
            COMPUTE pvalue;
               IF pvalue <0.05 THEN CALL DEFINE("pvalue", "STYLE", "STYLE=[FONT_WEIGHT=BOLD]");
            ENDCOMP;
           %end;

         COMPUTE ProbChiSq;
            IF ProbChiSq <0.05 THEN CALL DEFINE("ProbChiSq", "STYLE", "STYLE=[FONT_WEIGHT=BOLD]");
         ENDCOMP;

           %if &logrank = T %then %do;
              COMPUTE logrankp;
               IF logrankp <0.05 THEN CALL DEFINE("logrankp", "STYLE", "STYLE=[FONT_WEIGHT=BOLD]");
            ENDCOMP;
           %end;

           compute after covariate; line ''; endcomp;               
      RUN;

   %if &doc = T %then %do;
      ods rtf close;
   %end;

   /* Reload original options that were in use before running the macro */
   /* This is mainly to reset the orientation */
   PROC OPTLOAD data=_options;
   RUN;

   /* If not in debug mode then delete temporary data sets */
   %if &debug = F %then %do;
      /* If there are work data sets that should not be deleted */
      %if %sysevalf(%superq(work_sets)~=,boolean) %then %do;
         /* DELETE ALL TEMPORARY DATASETS that were created */
         proc datasets lib=work memtype=data;  
            save &work_sets;
          quit;  
      %end;
      %else %do;
         proc datasets lib=work kill memtype=data;  
         quit;
      %end;
   %end;

%MEND;
[/code]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-23 20:13:01
有点长,大侠你看看
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-23 21:13:33
不好意思,由于内容有点多,帖子排版有点乱,不知道各位大侠有没有结论?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群