[程式] SAS的keep和drop執行時間

看板Statistics作者 (啊猛)時間6年前 (2020/02/01 22:39), 編輯推噓4(4010)
留言14則, 3人參與, 6年前最新討論串1/1
[軟體程式類別]: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://www.ptt.cc/bbs/Statistics/M.1580567963.A.D89.html

02/02 00:36, 6年前 , 1F
drop statement是控制PDV到輸出資料集這個環節的,所以P
02/02 00:36, 1F

02/02 00:36, 6年前 , 2F
T還是有被讀進memory。
02/02 00:36, 2F

02/02 00:36, 6年前 , 3F
要控制不要讀進memory的話,要用
02/02 00:36, 3F

02/02 00:36, 6年前 , 4F
set have(drop=pt); 這個寫法
02/02 00:36, 4F

02/02 21:09, 6年前 , 5F
即使有讀進來後丟掉也不會出error吧,會是uninitialize
02/02 21:09, 5F

02/03 20:52, 6年前 , 6F
感謝兩位 不過我的問題就是SAS是什麼時候丟掉呢
02/03 20:52, 6F

02/04 20:18, 6年前 , 7F
就是我回答的那個時候,資料output出去時丟掉
02/04 20:18, 7F

02/05 09:20, 6年前 , 8F
謝謝 所以那個階段也叫做compilation phase嗎?
02/05 09:20, 8F

02/05 13:42, 6年前 , 9F
應該這麼說,keep drop在compilation phase作用指的是對
02/05 13:42, 9F

02/05 13:42, 6年前 , 10F
PDV上flag,execution phase裡面data部分還是會被讀取進
02/05 13:42, 10F

02/05 13:42, 6年前 , 11F
memory,只是不輸出,所以這是不一樣的階段問題,一個是
02/05 13:42, 11F

02/05 13:42, 6年前 , 12F
處理schema,一個是處理data。原文裡面看起來問的是data
02/05 13:42, 12F

02/05 13:42, 6年前 , 13F
的處理
02/05 13:42, 13F

02/05 22:20, 6年前 , 14F
謝謝 了解了
02/05 22:20, 14F
文章代碼(AID): #1UDOsRs9 (Statistics)