全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2072 5
2011-04-04
大家好,剛在看《A Little SAS Book》,講到關於transpose的應用,但是實際中一般都是多個變量轉換的,比如說從wind導出的數據都是wide類型,需要轉成long才能進行分析:
codevar1_2001var1_2002var2_2001var2_2002
00010.10.21210
00020.20.31310
00030.10.41111

轉換成:
codeyearvar1var2
000120010.112
000120020.210
000220010.213
000220020.310
000320010.111
000320020.411

查找了一些資料,說到需要逐個變量進行transpose,然後再merge起來。變量少的時候還湊合,但多了就非常麻煩。後來又看到說用到dictionary.columns,但是需要用到宏,因為初學,對宏還是不太瞭解,只知道大概的概念,請問具體的語句需要怎樣寫?謝謝。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-4-4 17:27:25
如果你的变量名是有规律的,可以考虑一下用数组和宏结合。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-4-6 04:03:22
不好意思,想不出用dictionary.column更好的technique了:-(。
抛个砖吧。

DATA A;
INPUT code var1_2001 var1_2002 var2_2001 var2_2002;
datalines;
0001 0.1 0.2 12 10
0002 0.2 0.3 13 10
0003 0.1 0.4 11 11
;
run;

%macro
wide2long (lib=work, dsn=a );

proc transpose data=&
lib..&dsn out=b;
by code;
run;

data byear;
set b;
by code _name_;
year=put(scan(_name_,
2
,'_'),4.);
_name_=scan(_name_,
1
,'_');
run;

proc sort data=byear out=sorted;
by code year;
run;
proc transpose data=sorted out=transposed (drop=_name_);
by code year;
run;

%mend
;
%wide2long;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-4-6 08:56:03
先答謝,再慢慢消化一下,謝謝啊。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-4-6 09:55:46
3# sas_user 学习了,谢谢~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-4-6 10:14:55
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群