作者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/cn.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