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