2014-03-13 268 views
0

假设我在数据集中有变量X1,X2,X3和组。组具有不同的值,例如1-10,X1,X2,X3是连续变量。在整个数据集中,X1,X2和X3的遗漏值彼此独立。换句话说,X1可能会丢失,但不会是X2和X3,另一个观察结果可能只是X3丢失。SAS缺失值替换

对于每个缺失的值,我想用它在该观察的Group#内的该变量的中值代替它。

有没有什么好的方法可以做到这一点?

预先感谢

+0

为了实现您的结果,@ Joe的答案是要走的路。我也建议看看PROC MI(多重插补)。这使得可以使用更复杂的方法,这对于任务的目的可能更好,例如,统计建模 – Longfish

回答

1

这里的基本方法是多步骤:

  1. 计算位数由组(使用PROC装置或类似的分析过程)
  2. 通过组合并到主数据集,与一个新的变量(说“x3_median”等)
  3. 在该datastep或后续的,x3 = coalesce(x3,x3_median);和类似的x1和x2。

您可以在单个datastep中或在单个PROC SQL连接中执行2和3操作。您理论上可以在一个SQL步骤中计算中位数并追加它,但这可能会更慢并且难以维护(因为中位数对SQL来说是一个相对困难的计算,不能直接用函数完成 - MEDIAN函数是不是SQL中的聚合函数)。