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;
1条答案
按热度按时间41zrol4v1#
您可以使用数据步方法。
我没有输入你的数据,所以这里有一个完全工作的例子,类似于你的,但不完全相同。
使用
VNAME()
获取变量名。使用数组获取值。宽到长使用数据步https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/
阵列:https://stats.idre.ucla.edu/sas/seminars/sas-arrays/