如何使用SAS删除缺少字符值的行
我有这样一个数据集:如何使用SAS删除缺少字符值的行,sas,character,row,Sas,Character,Row,我有这样一个数据集: id type time 70657 23E Nov 4 2002 12:00AM 61651 12R 11603 DQ2 45819 Jul 23 2013 12:00AM 732 Mar 4 2011 12:00AM 22810 231 我想用缺失的值做两件事。 第一件事是如果变量time的值为“”,如何删除行 期望输出1 id type time 70657 23E Nov
id type time
70657 23E Nov 4 2002 12:00AM
61651 12R
11603 DQ2
45819 Jul 23 2013 12:00AM
732 Mar 4 2011 12:00AM
22810 231
我想用缺失的值做两件事。
第一件事是如果变量time的值为“”,如何删除行
期望输出1
id type time
70657 23E Nov 4 2002 12:00AM
45819 Jul 23 2013 12:00AM
732 Mar 4 2011 12:00AM
第二件事是,如果有任何缺少的值,则删除这些行
期望输出2
id type time
70657 23E Nov 4 2002 12:00AM
SAS代码:
data character;
length id type time $ 24;
input id $ 1-5 type $ 8-10 time $ 13-31;
cards;
70657 23E Nov 4 2002 12:00AM
61651 12R
11603 DQ2
45819 Jul 23 2013 12:00AM
732 Mar 4 2011 12:00AM
22810 231
;
run;
我倾向于使用
procsql
。比如:
proc sql;
create table newchar as
select *
from character
where id is not null and type is not null and time is not null;
quit;
SAS替代方案
DATA WANT;
SET CHARACTER (WHERE = (TIME ~= "" AND TYPE ~= "" AND ID ~= ""));
RUN;
这是可行的,但我的实际数据超过10000行,我在我的数据中运行这个sql,它生成两行,最多20000行。这里发生了什么?@LuYu。我的逻辑是错误的。它返回的行在某些列中具有
null
值,而不是没有null
值。