gpt4 book ai didi

if-statement - SAS 中的 If/Then/Else 不工作

转载 作者:行者123 更新时间:2023-12-04 04:25:04 24 4
gpt4 key购买 nike

努力让这个 If/Then/Else 语句不起作用。我有两列:变量和值。变量具有变量的名称,而值具有可能与该变量相关联的所有潜在代码。

例子:

Variable     Value
Gender F
Gender M

我想创建一个名为“Flag”的字段,如果该值不在值列表中,它应该标记该字段;否则,请将该字段留空

data Want;
length
Variable $40.
Value $40.
Flag $8.;
set Have (keep = Variable Value);
if (Variable = 'Gender' and Value ^= 'M') then Flag = 'UnkCode'; else Flag="";
if (Variable = 'Gender' and Value ^= 'F') then Flag = 'UnkCode'; else Flag="";
if (Variable = 'Gender' and Value ^= 'O') then Flag = 'UnkCode'; else Flag="";
if (Variable = 'Gender' and Value ^= 'U') then Flag = 'UnkCode'; else Flag="";
run;
quit;

我使用的数据集只有两个性别值:F 和 M。无论出于何种原因,两行中的标志字段都有“UnkCode”

知道我做错了什么吗?

最佳答案

只是,可能,更清楚一点:您的 if 语句是按顺序计算的。

所以对于您的第一次观察,Flag 最初将设置为“”,如 ('M' = 'M')。但是,随后的 if 语句会覆盖 Flag,并且作为 ('M' ^= 'F'),Flag 会被覆盖,并采用值 'UnkCode'。

除了 Keni 使用 in 语句(这比我将要建议的代码更好)之外,您还可以执行以下操作(这可能有助于您更好地理解 if 语句)。

if (Variable = 'Gender' and Value = 'M') then Flag = "";
else if (Variable = 'Gender' and Value = 'F') then Flag = "";
else if (variable = 'Gender' and Value = 'O') then Flag = "";
else if (Variable = 'Gender' and Value = 'U') then Flag = "";
else if (Variable = 'Gender') then Flag = 'UnkCode';

我还建议不要使用名为“Variable”且值为“Gender”的变量,而只需使用一个名为“Gender”且值为“F”或“M”的变量。虽然在某些特定情况下您不希望以这种方式创建数据集,但它们相对较少且相差甚远。

关于if-statement - SAS 中的 If/Then/Else 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23412048/

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