SAS:如何检查导入的Excel工作表中的列是否包含字符串?



我已经从 excel 工作表中导入了一个数据集,我想删除一些观察结果。比如说,我有一个变量告诉我学生是否通过(字符串"通过"和"失败"(。我想从数据集中删除所有失败的学生。

我确实知道通常我可以通过 if 语句来做到这一点。但是,我不知道如何访问临时数据集。导入后是否必须打开它,然后使用 if 语句进行检查?

这就是我尝试的方式:

proc import datafile="C:UsersUserDesktoptestresults.xlsx"
DBMS=XLSX; 
if Status = "failed" then delete
run;

我知道这行不通,因为"如果"条件仅在数据驻留在 PDV 中时才有效。

是否可以在导入后而不是导入时删除?

在输出数据集上使用 where 子句:

proc import file="my.xlsx"
out=work.myxlsx(where=(status^="failed"))
dbms=xlsx
replace;
run;

where语句将修改 PROC IMPORT 的输出数据集,如 DomPazz 所示。

或者,您可以使用数据步骤。

proc import datafile="C:UsersUserDesktoptestresults.xlsx" out=have DBMS=XLSX; 
run;
data want;
set have;
if Status = "failed" then delete;
run;

当然,无论您是在导入后立即(或在同一提交中(还是稍后一段时间,这都会起作用。

最新更新