楼主: crighton
1872 5

[问答] Transpose+merge [推广有奖]

  • 0关注
  • 0粉丝

副教授

17%

还不是VIP/贵宾

-

威望
0
论坛币
5578 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
49417 点
帖子
273
精华
0
在线时间
516 小时
注册时间
2006-10-2
最后登录
2018-8-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,剛在看《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,但是需要用到宏,因為初學,對宏還是不太瞭解,只知道大概的概念,請問具體的語句需要怎樣寫?謝謝。
二维码

扫码加我 拉你入群

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

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

关键词:Transpose Merge Trans pose ans Merge Transpose

沙发
275769263 发表于 2011-4-4 17:27:25 |只看作者 |坛友微信交流群
如果你的变量名是有规律的,可以考虑一下用数组和宏结合。

使用道具

藤椅
sas_user 发表于 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;

使用道具

板凳
crighton 发表于 2011-4-6 08:56:03 |只看作者 |坛友微信交流群
先答謝,再慢慢消化一下,謝謝啊。

使用道具

报纸
leedx 发表于 2011-4-6 09:55:46 |只看作者 |坛友微信交流群
3# sas_user 学习了,谢谢~

使用道具

地板
yxj985211 发表于 2011-4-6 10:14:55 |只看作者 |坛友微信交流群
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
签名被屏蔽

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 19:00