【发布时间】:2021-06-15 03:27:47
【问题描述】:
我想检查一个字符变量是否存在于其他 9 个字符变量中,但是我很难编写一段代码,该代码可以为我的数据集中的每个观察值自动生成一个变量列表。这是我拥有的数据集的一个示例:
| ID | MainVar | Var1 | Var2 | Var3 | Var4 | Var5 | Var6| Var7 | Var8 | Var9 |
| 1 | Apple | Orange | Pear | | | | | | | |
| 2 | Pear | Apple | Pear | Orange | | | | | | |
我想为 ID 1 输出一个标志或类似的东西,它在 Var1-9 中不存在 MainVar。所以看起来像这样:
| ID | MainVar | Var1 | Var2 | Var3 | Var4 | Var5 | Var6| Var7 | Var8 | Var9 | Err_msg |
| 1 | Apple | Orange | Pear | | | | | | | | Check list |
| 2 | Pear | Apple | Pear | Orange | | | | | | | |
我的代码如下所示:
Data Want;
set have;
if MainVar not in (Var1, Var2, Var3, Var4, Var5, Var6, Var7, Var8, Var9) then Err_msg = 'Check list';
run;
SAS 产生以下错误:
ERROR 22-322: Syntax error, expecting one of the following: a quoted string, a numeric constant, a datetime constant,
a missing value, iterator, (.
我假设我需要生成一个带引号的字符串的实际列表,即使所有 VAR1-9 变量确实是字符串。有没有人可以轻松解决这个问题?
【问题讨论】: