sql - PROC SQL:如何将 3 列合并为 1,并创建一个额外的过滤列?
解决方案
您可以使用数据步骤方法。
我没有输入您的数据,所以这是一个与您的相似但不完全相同的完整示例。
用于VNAME()
获取变量名。使用数组来获取值。
DATA wide;
input famid faminc96 faminc97 faminc98 ;
CARDS;
1 40000 40500 41000
2 45000 45400 45800
3 75000 76000 77000
;
RUN;
DATA long1a;
SET wide;
*declare an array with the list of variables to transpose;
ARRAY afaminc(96:98) faminc96 - faminc98 ;
DO year = 96 to 98 ;
faminc = afaminc(year);
variable_name = vname(afaminc(year));
OUTPUT;
END;
DROP faminc96 - faminc98 ;
RUN;
从宽到长使用数据步骤 https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/