我有一個奇怪的問題與PROC意義和使用StackODSOutput選項。考慮這個例子。SAS PROC與StackODSOutput的意義:一個名爲「標籤」的變量
我首先要建立一個分析數據集假人。
/* Step-1: Create a dummy dataset for analysis */
data ds1;
label x = 'Variable X';
label y = 'Variable Y';
do i = 1 to 100;
x = ranuni(1234);
y = ranuni(5678);
keep x y;
output;
end;
run;
然後,我用StackODSOutput選項運行PROC MEANS。這將創建一個名爲「stats」的輸出數據集。
/* Step-2: I run PROC means to capture the output in a dataset called stats */
proc means data=ds1 StackODSOutput mean;
var x y;
ods output summary=stats;
run;
這個「stats」數據集有一個名爲「Label」的變量。我知道這個變量是存在的,因爲我做了一個proc內容,並且在那裏看到這個變量。
/* Step-3: Confirm visually that there is a variable called Label in stats dataset */
proc contents data=stats varnum; run;
但是,我似乎無法在任何地方引用這個名爲「Label」的變量。例如,以下PROC SQL語句會生成一個錯誤。我可以在「統計」數據集中引用所有其他變量,而不會有任何問題。
/* Step-4: But, I cannot seem to reference the variable called "Label" in stats dataset! */
proc sql;
select Variable, Label from stats;
quit;
的錯誤如下:
43 proc sql;
44 select Variable, Label from stats;
ERROR: The following columns were not found in the contributing tables: Label.
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
45 quit;
你知道,如果我做錯了什麼?我的SAS代碼或SAS安裝有問題嗎?
MY SAS版本的SAS 9.3(9.03.01M2P08152012)。
謝謝。
Karthik。
根據Reeza的要求,這裏是完整的日誌輸出。
1 The SAS System 15:52 Wednesday, November 9, 2016
1 %_eg_hidenotesandsource;
5 %_eg_hidenotesandsource;
20
21 /* Step-1: Create a dummy dataset for analysis */
22 data ds1;
23 label x = 'Variable X';
24 label y = 'Variable Y';
25 do i = 1 to 100;
26 x = ranuni(1234);
27 y = ranuni(5678);
28 keep x y;
29 output;
30 end;
31 run;
NOTE: The data set WORK.DS1 has 100 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
32
33 /* Step-2: I run PROC means to capture the output in a dataset called stats */
34 proc means data=ds1 StackODSOutput mean;
35 var x y;
36 ods output summary=stats;
37 run;
NOTE: The data set WORK.STATS has 2 observations and 3 variables.
NOTE: There were 100 observations read from the data set WORK.DS1.
NOTE: PROCEDURE MEANS used (Total process time):
real time 0.06 seconds
cpu time 0.03 seconds
38
39 /* Step-3: Confirm visually that there is a variable called Label in stats dataset */
40 proc contents data=stats varnum; run;
NOTE: PROCEDURE CONTENTS used (Total process time):
real time 0.03 seconds
cpu time 0.03 seconds
41
42 /* Step-4: But, I cannot seem to reference the variable called "Label" in stats dataset! */
43 proc sql;
44 select Variable, Label from stats;
ERROR: The following columns were not found in the contributing tables: Label.
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
45 quit;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
2 The SAS System 15:52 Wednesday, November 9, 2016
46 /* What! */
47
48
49
50 %_eg_hidenotesandsource;
62
63
64 %_eg_hidenotesandsource;
67
代碼工作正常,我。立即運行並再次檢查,可能你在某處忘記了某處。你使用什麼版本的SAS?我在9.4 TS1M3上。如果仍然無法運行,請在一次運行中從運行代碼發佈完整日誌。 – Reeza
我的SAS版本是SAS 9.3(9.03.01M2P08152012)。另外,我添加了完整的SAS日誌。 – Karthik
嘗試設置'option validvarname = v7;'在開始時再試一次。如果不行,請發佈proc內容的輸出。我還建議提高技術支持。如果知道的問題,他們可以指出你在正確的方向。或者至少可以跟蹤它。 – Reeza