SAS使用循环根据其他列的值添加新的多列

问题描述

我有我在 SAS Studio 中使用 PROC MEANS 和 PROC sql 创建的这种数据表(它只是大型数据集的一部分)。我想在这里添加几个新列,显示每年的 pct_missing。因为,现在,我们在多行中有相同的变量,因为我按年份对其进行了分组。有什么办法可以使用循环添加这些类型的列吗?

当前数据(原始数据表):

enter image description here

我希望拥有的: (想添加所有新列pct_missing_2004 ~ pct_missing_2018 显示每年变量的pct_missing)(下面写的pct_missing_2004,2005的值只是一个例子!!!)

无论如何我们可以使用循环或 SAS 中的任何其他好方法来做到这一点!?

解决方法

我不是 100% 我确定你想要什么,但也许转置可能会有所帮助。

看看下面这个例子。

data have; 
 input 
    year 4. 
    variable $1.
    pct_missing 3.;
 CARDS;
2011A100
2011B90
2010A80
2010B70
2010C60
 ;
 run; 
 
 proc sort 
  data=have;
  by variable; 
 run; 
 
 
 Proc Transpose
    data=have
    out=want (drop=_name_)
    prefix=pct_missing;
    id year;
    var  pct_missing;
    by variable ; 
 run;

安卓