gpt4 book ai didi

sas - 解释SAS读取数据步骤的顺序(概念)

转载 作者:行者123 更新时间:2023-12-01 11:44:47 25 4
gpt4 key购买 nike

我需要了解 SAS 如何读取/执行数据步骤。当我查找有关 SAS 如何读取数据步骤的信息时,我似乎只找到有关它如何读取以进行合并的信息,我不了解与常规数据步骤相关的信息。比方说,我有这行代码:

data work.DATA;
if amount_a= . then
amount_a= 1;
amount_b= 1;
amount_a= . ;
total = (amount_a + amount_b) + 0 ;
run;

现在,鉴于此,“总计”等于多少?我想知道,本质上,SAS 将如何读取这一步——它会首先读取/执行哪一行?它是从最后一个开始,然后一直向上吗?还是从顶部开始,然后逐步下降?谢谢。

最佳答案

SAS 数据 step 从上到下处理代码,从 DATA 语句开始,到 结束RUN; 语句。数据步骤有一个隐含的 OUTPUT; 语句包含在 RUN; 之前,如果代码没有明确的输出语句。

由于 SAS 是一种“解释型”语言,每个数据步骤的代码都在执行前编译。编译的一部分涉及创建称为程序数据向量 (PDV) 的结构,其中包含程序使用的所有变量的执行属性。变量按照它们在代码中出现的顺序(从上到下)定义到 PDV。

一个方便的调试工具是 PUTLOG 语句,您可以使用它在程序执行期间将输出写入 SAS 日志文件。例如,考虑一下:

data work.DATA;
if amount_a= . then
amount_a= 1;
amount_b= 1;
putlog amount_a= amount_b=;
amount_a= . ;
putlog amount_a= amount_b=;
total = (amount_a + amount_b) + 0 ;
putlog amount_a= amount_b= total=;
output;
run;

请注意,我添加了一个明确的 OUTPUT; 语句来进行说明。结果是一个包含一个观测值和三个变量的 SAS 数据。您的变量 total 将是一个缺失值,因为在计算时,amount_a 缺失。您还将在 SAS 日志中收到一条注释,指示“已生成缺失值”。

要全面了解 SAS 如何做到这一点,最好的地方是 SAS Language Reference: Concepts 一书。 <强> Here is a link 到 SAS 版本 9.3 的书。尤其要阅读关于数据步骤处理的章节。

关于sas - 解释SAS读取数据步骤的顺序(概念),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16264859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com