如何删除SAS中的观察结果

时间:2018-02-15 15:45:06

标签: sas

我在SAS工作时有一个大约有80000个观察的文件,我决定保留11个变量。

我想删除值超过97的变量。这些是缺少的观察结果,我不想处理它。

我尝试使用以下代码(请不要判断):

  199  DATA radata;
200       SET radata;
201       IF ca10 <= 97 THEN OUTPUT;
202       IF ca10 > 97 THEN DELETE;
203  IF sex <= 97 THEN OUTPUT;
204       IF sex > 97 THEN DELETE;
205       IF sex <= 97 THEN OUTPUT;
206       IF sex > 97 THEN DELETE;
207       IF cityrur <= 97 THEN OUTPUT;
208       IF cityrur > 97 THEN DELETE;
209       IF edu3 <= 97 THEN OUTPUT;
210       IF edu3 > 97 THEN DELETE;
211       IF ca10 <= 97 THEN OUTPUT;
212       IF ca10 > 97 THEN DELETE;
213       IF hinc3rel <= 97 THEN OUTPUT;
214       IF hinc3rel > 97 THEN DELETE;
215       IF aa10i <= 97 THEN OUTPUT;
216       IF aa10i > 97 THEN DELETE;
217       IF ba10 <= 97 THEN OUTPUT;
218       IF ba10 > 97 THEN DELETE;
219       IF age <= 97 THEN OUTPUT;
220       IF age > 97 THEN DELETE;
221       IF ga10c <= 97 THEN OUTPUT;
222       IF ga10c > 97 THEN DELETE;
223       IF bc20 <= 97 THEN OUTPUT;
224       IF bc20 > 97 THEN DELETE;
225       IF ac10a <= 97 THEN OUTPUT;
226       IF ac10a > 97 THEN DELETE;
227       IF ga10j <= 97 THEN OUTPUT;
228       IF ga10j > 97 THEN DELETE;
229    RUN;
然而,SAS不是通过减去观察而是通过添加更多观察来做出回应!

请帮助.....

1 个答案:

答案 0 :(得分:1)

https://communities.sas.com/可能是一个提出这样一个编程问题的好地方(如果这个问题被关闭,我也不会感到惊讶。)

以下是删除所有观察值(即行)的3种方法,其中至少有一个变量值大于97:

data radata;
  set radata;
  array x(10) ca10 sex cityrur edu3 hinc3 aa10i age ga10c bc20 ga10j;
  do i=1 to 10; 
     if x(i) > 97 then delete;
  end;
run;

data radata;
  set radata;
  if ca10 > 97 then delete;
  if sex > 97 then delete; 
  if cityrur > 97 then delete;
  if edu3 > 97 then delete;
  if hinc3 > 97 then delete;
  if aa10i > 97 then delete;
  if age > 97 then delete;
  if ga10c > 97 then delete;
  if bc20 > 97 then delete;
  if ga10j > 97 then delete;
run;

data radata;
  set radata;
  if ca10 > 97 or sex > 97 or cityrur > 97 or edu3 > 97 or
     hinc3 > 97 or aa10i > 97 or age > 97 or ga10c > 97 or
     bc20 > 97 or ga10j > 97 then delete;
run;

现在,如果您只是希望这些变量具有缺失值符号(.)而不删除整个观察结果,那么您需要将delete替换为x(i) = . 。你可以为第二个例子做类似的事情。