我已经从Excel工作表中导入了数据集,我想删除一些观察值。说,我有一个变量,它告诉我学生是否通过(带有字符串“通过”和“失败”)。我想从数据集中删除所有失败的学生。
我知道通常我可以使用if语句来做到这一点。但是,我不知道如何访问临时数据集。导入后是否必须打开,然后使用if语句检查?
这是我尝试过的方式:
proc import datafile="C:\Users\User\Desktop\testresults.xlsx"
DBMS=XLSX;
if Status = "failed" then delete
run;
我知道这不会起作用,因为“ if”条件仅在数据驻留在PDV中时有效。
是否可以在导入后而不是在导入时删除?
答案 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;
无论您是在导入后立即(或在同一提交中)还是稍后再进行操作,这当然都可以。