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

时间:2018-08-23 13:10:44

标签: sas

我已经从Excel工作表中导入了数据集,我想删除一些观察值。说,我有一个变量,它告诉我学生是否通过(带有字符串“通过”和“失败”)。我想从数据集中删除所有失败的学生。

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

这是我尝试过的方式:

proc import datafile="C:\Users\User\Desktop\testresults.xlsx"

DBMS=XLSX; 

if Status = "failed" then delete

run;

我知道这不会起作用,因为“ if”条件仅在数据驻留在PDV中时有效。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

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

proc import datafile="C:\Users\User\Desktop\testresults.xlsx" out=have DBMS=XLSX; 
run;

data want;
set have;
if Status = "failed" then delete;
run;

无论您是在导入后立即(或在同一提交中)还是稍后再进行操作,这当然都可以。