作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
努力让这个 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/
我是一名优秀的程序员,十分优秀!