作者bruce89 (啊猛)
看板Statistics
標題[程式] SAS的keep和drop執行時間
時間Sat Feb 1 22:39:21 2020
[軟體程式類別]:SAS
[程式問題]:
[軟體熟悉度]:
新手
[問題敘述]:
就我所學SAS在執行data step的時候會先執行compilation phase(包括check code,
set up PDV等等)再處理execution phase
又最近讀到一篇文章寫到drop和keep statement也會在compilation phase執行
所以我就作了以下的測試:
假如have dataset有PT這個column,下面這段code卻是可以正常運行的
data want;
set have;
drop PT;
PT2 = PT;
run;
我的疑問是照理說drop就沒有把PT讀入,這一段應該會error才對
不曉得我哪裡想錯了? 先謝謝各位
PS:
文章連結:
https://reurl.cc/qDE9ry
[程式範例]:
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.154.207 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Statistics/M.1580567963.A.D89.html
1F:推 west1996: drop statement是控制PDV到輸出資料集這個環節的,所以P 02/02 00:36
2F:→ west1996: T還是有被讀進memory。 02/02 00:36
3F:→ west1996: 要控制不要讀進memory的話,要用 02/02 00:36
4F:→ west1996: set have(drop=pt); 這個寫法 02/02 00:36
5F:推 nkes60917: 即使有讀進來後丟掉也不會出error吧,會是uninitialize 02/02 21:09
6F:→ bruce89: 感謝兩位 不過我的問題就是SAS是什麼時候丟掉呢 02/03 20:52
7F:推 west1996: 就是我回答的那個時候,資料output出去時丟掉 02/04 20:18
8F:→ bruce89: 謝謝 所以那個階段也叫做compilation phase嗎? 02/05 09:20
9F:推 west1996: 應該這麼說,keep drop在compilation phase作用指的是對 02/05 13:42
10F:→ west1996: PDV上flag,execution phase裡面data部分還是會被讀取進 02/05 13:42
11F:→ west1996: memory,只是不輸出,所以這是不一樣的階段問題,一個是 02/05 13:42
12F:→ west1996: 處理schema,一個是處理data。原文裡面看起來問的是data 02/05 13:42
13F:→ west1996: 的處理 02/05 13:42
14F:→ bruce89: 謝謝 了解了 02/05 22:20