楼主: bridog
5694 15

数据处理proc transpose [推广有奖]

  • 0关注
  • 2粉丝

博士生

84%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
4.3500
学术水平
0 点
热心指数
3 点
信用等级
0 点
经验
4748 点
帖子
255
精华
0
在线时间
273 小时
注册时间
2008-11-29
最后登录
2024-3-24

楼主
bridog 发表于 2011-9-16 02:26:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
code   year   value
1       2000    5
1       2000   6
1       2000  4.5
1      2000   5.3
1      2005   5.2
1      2005   6.4
1      2005   7
1      2005   7.8
2       2001    5
2       2001   6
2       2001  4.5
2      2001   5.3
2      2005   5.2
2      2005   6.6
2      2005   7.5
2      2005   8
.       .
.       .
.       .
请问高手们如何把上列数转换成(how to the Change data above into the following data ):
code year1 value1   year2  value2
1       2000    5      2005   5.2
1       2000   6       2005  6.4
1       2000  4.5     2005   7
1      2000   5.3     2005   7.8
2      2001   5       2005   5.2
2      2001   6       2005   6.6
2      2001  4.5     2005   7.5
2     2001   5.3     2005   8
谢谢了!(Thanks a lot).
二维码

扫码加我 拉你入群

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

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

关键词:Transpose Trans 数据处理 pose SPO following 如何 数据分析专题 数据处理 数据分析软件 数据分析报告 面板数据分析 excel数据分析 数据分析方法 项目数据分析

本帖被以下文库推荐

沙发
456852 发表于 2011-9-16 03:38:54
貌似根本不需要transpose;
data a;
input code   year   value;
cards;
1       2000    5
1       2000   6
1       2000  4.5
1      2000   5.3
1      2005   5.2
1      2005   6.4
1      2005   7
1      2005   7.8
2       2001    5
2       2001   6
2       2001  4.5
2      2001   5.3
2      2005   5.2
2      2005   6.6
2      2005   7.5
2      2005   8
;
data b(rename=(value=value1 year=year1)) c(rename=(value=value2 year=year2));
set a;
if year=2005 then output c;
else output b;
run;
data final;
merge b c;
by code;
run;

藤椅
bridog 发表于 2011-9-16 10:43:02
非常感谢!但是时间并不是都是2005.而且有的code还不止只有2个year呢,有好几个year

板凳
soporaeternus 发表于 2011-9-16 10:57:27
给多点细节吧,多个年度的话,结果是个什么样子
Let them be hard, but never unjust

报纸
haiyu819 发表于 2011-9-16 16:11:25
貌似不是很清楚

地板
jingju11 发表于 2011-9-16 21:10:38
  1. data c;
  2.         length code year1 value1 year value 8;
  3.         keep code year1 value1 year value;
  4.         ...
  5.         _t[n, 1] =year; _t[n, 2] =value;
  6. run;
复制代码
其实,先按照年份分割数据再组合应该更明了。我的程序要求是一个code里有两个年份,而且第二个包含的观测不必第一个少。京剧

7
bridog 发表于 2011-9-16 21:56:58
非常谢谢关注这个问题并且帮忙的高手们。确切的数据情况如下:
area  num   year    value
1      1       2000    5
1      2      2000   6
1      3      2000  4.5
1     4      2000   5.3
1     1      2005   5.2
1     2     2005   6.4
1     3     2005   7
1     4     2005   7.8
2     1     2001    5
2     2     2001   6
2     3     2001  4.5
2     4    2001   5.3
2     1    2005   5.2
2     2    2005   6.6
2     3    2005   7.5
2     4     2005   8
2     5      2005  4
3     1     1998   4
3     2     1998   5
3     3     1998   6
3     1     2002   5
3     2     2002   6
3    3      2002    4.5
3    4      2002    5.2
3    1     2007   7
3    2      2007   6.4
3    3      2007   .
3    4     2007   6.8
想得到以下数据结构:
area     num    year1  value1   year2   value2    year3   value3
1            1      2000    5       2005     5.2          .         .
1            2      2000   6        2005    6.4          .          .
1            3      2000  4.5      2005    7            .          .
1            4      2000   5.3     2005    7.8         .          .
2            1      2001   5        2005    5.2         .          .
2            2      2001   6        2005    6.6         .          .
2            3      2001  4.5       2005   7.5         .          .
2            4      2001   5.3      2005    8           .           .
2            5        .        .         2005    4          .           .
3           1      1998    4         2002    5          2007     7
3           2      1998    5         2002    6          2007     6.4
3           3      1998    6         2002    4.5       2007     .
3           4       .        .           2002    5.2       2007     6.8

再一次感谢大家!谢谢帮忙!

8
jingju11 发表于 2011-9-16 22:39:46
  1. data have2;
  2.         set have;
  3.         by area year notsorted;
  4.         if first.year then n ++1;
  5.         if first.area then n =1;
  6. run;
  7. data have3;
  8.         merge have2(where =(n =1) rename =(year =year1 value =value1))
  9.                                         have2(where =(n =2) rename =(year =year2 value =value2))
  10.                                         have2(where =(n =3) rename =(year =year3 value =value3))
  11.                                         ;
  12.         by area num;
  13. run;
复制代码
jingju

9
bridog 发表于 2011-9-17 04:34:24
jingju11 发表于 2011-9-16 22:39
jingju
Many thanks for you. If it is possible, could we make friends?

10
wodematlab 发表于 2012-11-2 21:43:26
jingju11 发表于 2011-9-16 22:39
jingju
学习啦,这个merge用的高级!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 17:39