我有一個時間序列SAS數據集,我想將其轉換爲垂直數據集。如何在sas中將多個列合併爲一個
我的數據看起來像..
ID A2009 A2010 A2011 A2012
1 1 2 3 4
2 1 2 3 4
3 1 2 3 4
4 1 2 3 4
5 1 2 3 4
data multcol;
infile datalines;
input ID A2009 A2010 A2011 A2012 A2013;
return;
datalines;
1 1 2 3 4 5
2 1 2 3 4 5
3 1 2 3 4 5
4 1 2 3 4 5
5 1 2 3 4 5
;
run;
proc print data=multcol noobs;
run;
我在網上搜索只找到一個解決方案爲following.Not工作。 但我的數據集太大,這種方法關閉我的電腦。
data cmbcol(keep=a orig_varname orig_obsnum);
set multcol;
array myvars _numeric_;
do i = 2 to dim(myvars);
orig_varname = vname(myvars(i));
orig_obsnum = _n_;
A = myvars(i);
output;
end;
run;
proc print data=cmbcol ;
title 'cmbcol';
run;
proc sort data=cmbcol;
by orig_varname a;
run;
proc print data=cmbcol noobs;
title 'cmbcol';
run;
而且我希望他們變成這樣。
ID t t+1
1 1 2
2 1 2
3 1 2
4 1 2
5 1 2
1 2 3
2 2 3
3 2 3
4 2 3
5 2 3
1 3 4
2 3 4
3 3 4
4 3 4
5 3 4
我們該怎麼做?
在此先感謝。
這裏的想法是幫助人們使用他們的代碼而不是真的在做他們的工作。請向我們展示一些代碼,以便人們可以幫助您。 – javidazac
這是一個非常奇怪的結構。看轉置得到你的t列,然後你可以用幾種方法來產生你的lead(t + 1)變量。這裏有多種解決方案。如前所述,嘗試一些,然後有人會幫助代碼。 – Reeza
對不起。我編輯帖子。感謝提醒。 –