我正在与 sas 一起操作一些数据集。
我正在使用数据步骤应用一些条件来保留列并过滤某些值。
问题是我想过滤最终我不需要的列,所以我想首先应用 where 子句,然后应用 keep 子句。
问题是 sas 执行,首先是 keep 子句,然后是 where,所以当它尝试应用 where 指令时,它没有找到应该应用它的列。这是我的代码:

data newtable;
set mytable(where=(var1<value)
keep var2);
end;

在这种情况下,错误是找不到 var1,因为我决定只保留 var2。我知道我可以做两个数据步骤,但我只想一步完成所有事情。
我怎样才能做到这一点?

最佳答案

这可以通过在输出数据集上使用 keep 数据集选项来实现,例如(未经测试):

data newtable(keep=var2);
  set mytable(where=(var1<value));
end;

或者,可以使用 keep 语句,例如(未经测试):
data newtable;
  set mytable(where=(var1<value));
  keep var2;
end;

关于sas - 应用 keep 和 where together sas,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52199086/

10-11 11:10