看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: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
west1996: drop statement是控制PDV到輸出資料集這個環節的,所以P 02/02 00:36
west1996: T還是有被讀進memory。 02/02 00:36
west1996: 要控制不要讀進memory的話,要用 02/02 00:36
west1996: set have(drop=pt); 這個寫法 02/02 00:36
nkes60917: 即使有讀進來後丟掉也不會出error吧,會是uninitialize 02/02 21:09
bruce89: 感謝兩位 不過我的問題就是SAS是什麼時候丟掉呢 02/03 20:52
west1996: 就是我回答的那個時候,資料output出去時丟掉 02/04 20:18
bruce89: 謝謝 所以那個階段也叫做compilation phase嗎? 02/05 09:20
west1996: 應該這麼說,keep drop在compilation phase作用指的是對 02/05 13:42
west1996: PDV上flag,execution phase裡面data部分還是會被讀取進 02/05 13:42
west1996: memory,只是不輸出,所以這是不一樣的階段問題,一個是 02/05 13:42
west1996: 處理schema,一個是處理data。原文裡面看起來問的是data 02/05 13:42
west1996: 的處理 02/05 13:42
bruce89: 謝謝 了解了 02/05 22:20