这段 SAS 代码块的作用是什么?
What does this block of SAS code do?
我有 sas 代码需要部分转换为 c++ 代码,但我很难理解它的功能。我没有使用 sas 的经验,经过几个小时的各种教程和示例后,我取得的进展很小。我无权访问任何输入数据或任何相应的输出。代码遵循以下格式,但我更改了变量名称:
data data1;
set data2;
output;
if type='ABCD' and zone=1 then do;
type='BCDE'; spec='CDE'; sub='ABCD DEF'; output;
type='EFGH'; spec='FGH'; output;
type='ABCD'; spec='DEF';
end;
代码继续,不过我只需要理解这个if语句的逻辑即可。在实际代码中有很多这样的语句,但它们都遵循相同的结构,理解一个应该有助于我理解它们。变量值仅在类型和唯一性方面很重要,如果这里的变量共享一个值,那么在原始代码中也是如此,否则它们是不同的。
我知道该程序旨在采用 type/spec/zone 的组合并将它们转换为其他 type/spec 组合,但我似乎无法理解其中的逻辑。
DATA 和 SET 语句分别定义目标和源。
第一个 OUTPUT 语句将确保目标至少具有从源数据读取的每条记录的一个副本。
IF/THEN 语句的 DO END 块中的代码在运行时会导致写入两条额外的记录。如赋值语句所示,它们将具有不同的 TYPE、SPEC 和 SUB 变量值。在 DO 块的末尾,TYPE、SPEC 和 SUB 的值将分别设置为 'ABCD'、'DEF' 和 'ABCD DEF'。
因此,如果您的输入是
TYPE,SPEC,SUB,ZONE
ABCD,UNK,UNK,0
ABCD,XX,YY,1
UNK,UNK,UNK,0
您发布的代码部分写入的值将是。
TYPE,SPEC,SUB,ZONE
ABCD,UNK,UNK,0
ABCD,XX,YY,1
BCDE,CDE,ABCD DEF,1
EFGH,FGH,ABCD DEF,1
UNK,UNK,UNK,0
我有 sas 代码需要部分转换为 c++ 代码,但我很难理解它的功能。我没有使用 sas 的经验,经过几个小时的各种教程和示例后,我取得的进展很小。我无权访问任何输入数据或任何相应的输出。代码遵循以下格式,但我更改了变量名称:
data data1;
set data2;
output;
if type='ABCD' and zone=1 then do;
type='BCDE'; spec='CDE'; sub='ABCD DEF'; output;
type='EFGH'; spec='FGH'; output;
type='ABCD'; spec='DEF';
end;
代码继续,不过我只需要理解这个if语句的逻辑即可。在实际代码中有很多这样的语句,但它们都遵循相同的结构,理解一个应该有助于我理解它们。变量值仅在类型和唯一性方面很重要,如果这里的变量共享一个值,那么在原始代码中也是如此,否则它们是不同的。
我知道该程序旨在采用 type/spec/zone 的组合并将它们转换为其他 type/spec 组合,但我似乎无法理解其中的逻辑。
DATA 和 SET 语句分别定义目标和源。
第一个 OUTPUT 语句将确保目标至少具有从源数据读取的每条记录的一个副本。
IF/THEN 语句的 DO END 块中的代码在运行时会导致写入两条额外的记录。如赋值语句所示,它们将具有不同的 TYPE、SPEC 和 SUB 变量值。在 DO 块的末尾,TYPE、SPEC 和 SUB 的值将分别设置为 'ABCD'、'DEF' 和 'ABCD DEF'。
因此,如果您的输入是
TYPE,SPEC,SUB,ZONE
ABCD,UNK,UNK,0
ABCD,XX,YY,1
UNK,UNK,UNK,0
您发布的代码部分写入的值将是。
TYPE,SPEC,SUB,ZONE
ABCD,UNK,UNK,0
ABCD,XX,YY,1
BCDE,CDE,ABCD DEF,1
EFGH,FGH,ABCD DEF,1
UNK,UNK,UNK,0