首页 > 解决方案 > 如何通过一系列变量删除 SAS 中的缺失值

问题描述

这是演示数据。

data faminc;
  input famid faminc1-faminc12;
cards;
1 3281 3413 3114 2500 2700 . 3114 3319 3514 1282 2434 2818
2 4042 . . . . . 1531 2914 3819 4124 4274 4471
3 6015 . . . . . . . . . . .
;
run;

我想创建一个名为 fam_indicator 的指标变量。如果变量 faminc2-faminc12 全部丢失,则 fam_indicator=1。否则 fam_indicator=0。

我尝试了下面的代码,但没有成功。

data fam;
set faminc;
if missing(faminc2-faminc12) then fam_indicator=1;
else fam_indicator=0;
run;

标签: sas

解决方案


你可以用很多不同的方式来做到这一点。如果变量都是数字,那么n将为您完成。

data fam;
set faminc;
if n(of faminc2-faminc12) eq 0 then fam_indicator=1;
else fam_indicator=0;
run;

cmissnmiss可以工作;cmiss无论类型如何,都是通用的,而nmiss仅适用于数字。他们会计算失踪的数量,所以你想要if cmiss(of faminc2-faminc12) eq 11或类似的。

您需要的另一件事是of. n(faminc2-faminc12)只会从另一个中减去一个。 of说“接下来是一个变量列表”,然后它将列表展开。


推荐阅读