Sas drop语句在幕后是如何工作的?

Sas drop语句在幕后是如何工作的?,sas,Sas,在数据步骤的编译阶段 PDV根据数据集中的所有sas变量初始化 然后在PDV中再添加一列 但在drop语句中,它会从PDV中删除两列,即(发票,msrp) 那个么,在执行阶段,它如何计算标记变量的值,该变量使用它已经删除的列的值呢 drop语句影响将哪些变量写入它生成的任何数据集,并将这些变量标记为不写入(类似地,keep以相反的方式影响-仅标记列出要写入的变量,而不标记剩余的变量)。在操作过程中,任何操作都不会对PDV的内容产生任何影响;它只影响发送到结果数据集的内容 在数据步骤执行期间,还有

在数据步骤的编译阶段 PDV根据数据集中的所有sas变量初始化 然后在PDV中再添加一列 但在drop语句中,它会从PDV中删除两列,即(发票,msrp)
那个么,在执行阶段,它如何计算标记变量的值,该变量使用它已经删除的列的值呢

drop语句影响将哪些变量写入它生成的任何数据集,并将这些变量标记为不写入(类似地,
keep
以相反的方式影响-仅标记列出要写入的变量,而不标记剩余的变量)。在操作过程中,任何操作都不会对PDV的内容产生任何影响;它只影响发送到结果数据集的内容


在数据步骤执行期间,还有很多其他变量可用,但没有写出。使用
put\u all以查看它们。其他变量包括
\u N
第一个。
最后一个。
by
语句生成的变量、临时数组变量、错误检查变量等等。

当我创建新列并为其赋值时,它只在生成的数据集中写出,这又如何?pdv没有改变吗?它也会在pdv中。PDV是分配用于处理数据步骤的临时内存空间;它与任何一个数据集(传入或传出)都没有直接关系。我建议您阅读PDV。
data _null_ ;
set sashelp.cars ;

markup=invoice+msrp;

drop invoice msrp ;

run;