SAS中文论坛
标题:
数据转换?
[打印本页]
作者:
shiyiming
时间:
2004-7-19 16:47
标题:
数据转换?
将下面的数据
DSCODE COUNTRY TYPE y2001 y2002 y2003
123 1 WC01001 1819350 1783020 1525807
123 1 WC01051 1646862 1560196 1366192
123 1 WC01084 53024 56811 53405
133 1 WC01001 1819350 1783020 1525807
133 1 WC01051 1646862 1560196 1366192
143 2 WC01001 1819350 1783020 1525807
143 2 WC01051 1646862 1560196 1366192
153 3 WC01001 1819350 1783020 1525807
153 3 WC01051 1646862 1560196 1366192
153 3 WC01094 53024 56811 53405
变成这样的形式
DSCODE COUNTRY YEAR WC01001 WC01051 WC01084 WC01094
123 1 2001 1819350 1646862 53024 .
123 1 2002 1783020 1560196 56811 .
123 1 2003 1525807 1366192 53405 .
133 1 2001 1819350 1646862 . .
133 1 2002 1783020 1560196 . .
133 1 2003 1525807 1366192 . .
143 2 2001 1819350 1646862 . .
143 2 2002 1783020 1560196 . .
143 2 2003 1525807 1366192 . .
153 3 2001 1819350 1646862 . 53024
153 3 2002 1783020 1560196 . 56811
153 3 2003 1525807 1366192 . 53405
补充说明:
1,DSCODE在不同的COUNTRY没有重复的,但是TYPE在不同的DSCODE或者COUNTRY下绝大部分重复。
2,希望可以用SAS一次完成。我现在可以想到的是按DSCODE一个一个的TRANSPOSE,然后合并。
肯请SAS高人不吝指教,这里先行谢过!!!(BOW)
作者:
shiyiming
时间:
2004-7-19 22:23
标题:
data transform
data a;
input DSCODE COUNTRY TYPE$ y2001 y2002 y2003;
cards;
123 1 WC01001 1819350 1783020 1525807
123 1 WC01051 1646862 1560196 1366192
123 1 WC01084 53024 56811 53405
133 1 WC01001 1819350 1783020 1525807
133 1 WC01051 1646862 1560196 1366192
143 2 WC01001 1819350 1783020 1525807
143 2 WC01051 1646862 1560196 1366192
153 3 WC01001 1819350 1783020 1525807
153 3 WC01051 1646862 1560196 1366192
153 3 WC01094 53024 56811 53405
;
proc transpose data=a out=b;
var y2001 y2002 y2003;
by dscode country;
id type;
data c;
set b(rename=(_name_=YEAR));
YEAR=substr(YEAR,2,4);
label year=;
run;
作者:
shiyiming
时间:
2004-7-20 09:35
标题:
非常感谢
非常感谢YEES高人,看来我对SAS还没有入门啊,呵呵。
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2