2014-07-15 69 views
1
data _null_ ; 
set sashelp.cars ; 

markup=invoice+msrp; 

drop invoice msrp ; 

run; 
在數據步驟 PDV的編譯階段

根據所有SAS變量,這些變量有在數據集 然後一個多個列在PDV 加入,但然後在降語句它即下降兩列(發票,MSRP intialized )從PDV 那麼如何在執行階段計算使用已經刪除的列的值的標記變量的值?Drop語句如何在幕後工作?

回答

0

drop聲明會影響寫出由它產生的任何數據集的變量,從而標記這些變量不會被寫出(類似地,keep以相反的方式影響 - 僅標記列出的要寫出的變量,而不標出剩下的變量)。在操作期間,這兩種操作都不會影響PDV的內容。它隻影響發送到結果數據集的內容。

在數據步驟執行期間還有其他很多變量可用,但不會寫出來。使用put _all_;來查看它們。其中包括_N_,first.last.變量由by語句生成,臨時數組變量,錯誤檢查變量等。

+0

當我創建新列併爲其賦值時,它只寫在生成的數據集中?並且pdv不被更改? –

+0

它也將在PDV中。 PDV是分配用於處理數據步驟的臨時內存空間;它不直接與任何一個數據集傳入或傳出。 – Joe

+1

我推薦[本文](http://support.sas.com/resources/papers/proceedings12/255-2012.pdf)作爲關於PDV的一個很好的閱讀。 – Joe