【问题标题】:How to delete observations in SAS如何删除 SAS 中的观察值
【发布时间】:2018-02-16 00:22:42
【问题描述】:

我在 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 的反应不是减去观察结果,而是添加更多观察结果!

请帮忙.....

【问题讨论】:

  • 请您发布一个示例,说明您的输入数据集是什么样的以及您尝试生成的相应输出数据?
  • 是否要删除一个或多个变量大于 97 的所有行?或者所有变量都 > 97 的所有行?或者所有值都 > 97 的所有列?未判断的代码是杂乱无章的,输出将为每个值 97 的情况。

标签: sas


【解决方案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) = .。您可以对第二个示例执行类似的操作。

【讨论】:

    猜你喜欢
    • 2019-01-29
    • 2014-06-18
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多