楼主: dcyhfut
5002 22

[问答] 怎样转置 [推广有奖]

  • 3关注
  • 0粉丝

博士生

94%

还不是VIP/贵宾

-

威望
0
论坛币
314 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4181 点
帖子
277
精华
0
在线时间
379 小时
注册时间
2011-4-10
最后登录
2022-1-12

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
aa.png
求助各位大侠,怎样将第一个表的数据转化为第二个表中的形式

aa1.png

测试数据集
bb.xls (201.5 KB)
二维码

扫码加我 拉你入群

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

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

关键词:测试数据 数据转化 各位大侠 数据集

回帖推荐

Imasasor 发表于4楼  查看完整内容

前提是同一个人,只有一个year和month
沙发
fm421 发表于 2012-11-4 10:42:45 |只看作者 |坛友微信交流群
数据透视吧。。。好像可以

使用道具

藤椅
webgu 发表于 2012-11-4 10:58:59 |只看作者 |坛友微信交流群
suppose your dataset is demo;
  1. data want(drop=type);
  2.     set demo;
  3.   retain t1 t2 t3 t4 t5;
  4.   by name notsorted;
  5.   if first.name  then
  6.     do; call missing(t1,t2,t3,t4,t5);
  7.   end;
  8.   select ;
  9. when( type='t1' )  t1=sale;
  10. when( type='t2 ')  t2=sale;
  11. when( type='t3' )  t3=sale;
  12. when( type='t4 ')  t4=sale;
  13. when( type='t5' )  t5=sale;
  14. end;
  15. if last.name then output;
  16. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
gugle + 1 + 1 + 1 分析的有道理

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

板凳
Imasasor 发表于 2012-11-4 10:59:39 |只看作者 |坛友微信交流群
  1. proc import datafile="K:bb.xls" out=a replace;
  2. run;

  3. %macro chao;
  4. %do i=1 %to 5;
  5. data t&i;
  6. set a;
  7. if type="t&i" then do;
  8. t&i=sale;
  9. output;
  10. end;
  11. drop type sale;
  12. run;
  13. proc sort data=t&i;
  14. by name code;
  15. run;
  16. %end;
  17. data total;
  18. merge t1-t5;
  19. by name code;
  20. run;
  21. %mend chao;
  22. %chao
复制代码
前提是同一个人,只有一个year和month
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

报纸
Imasasor 发表于 2012-11-4 11:05:04 |只看作者 |坛友微信交流群
webgu 发表于 2012-11-4 10:58
suppose your dataset is bb;
学习了高手的not sorted
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

地板
webgu 发表于 2012-11-4 11:07:52 |只看作者 |坛友微信交流群
Imasasor 发表于 2012-11-4 11:05
学习了高手的not sorted
呵呵,他的原数据库已经排好了。就不想再排了。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

7
Imasasor 发表于 2012-11-4 11:14:11 |只看作者 |坛友微信交流群
webgu 发表于 2012-11-4 11:07
呵呵,他的原数据库已经排好了。就不想再排了。
  1. data want(drop=type);
  2.   set bb;
  3.   by name notsorted;
  4. retain t1 t2 t3 t4 t5;
  5. if first.name then do;
  6. t1=.;
  7. t2=.;
  8. t3=.;
  9. t4=.;
  10. t5=.;
  11. end;
  12.   select ;
  13. when( type='t1' )  t1=sale;
  14. when( type='t2 ')  t2=sale;
  15. when( type='t3' )  t3=sale;
  16. when( type='t4 ')  t4=sale;
  17. when( type='t5' )  t5=sale;
  18. end;
  19. if last.name then output;
  20. run;
复制代码
为了避免不小心给人错误的代码,我还是稍稍修正了一下高手的小疏忽。
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

8
webgu 发表于 2012-11-4 11:20:39 |只看作者 |坛友微信交流群
Imasasor 发表于 2012-11-4 11:14
为了避免不小心给人错误的代码,我还是稍稍修正了一下高手的小疏忽。
呵呵,我也发现了,早已经更新了。谢谢。没记错的话,retain在切换by组的时候,应该会自动置为missing. 但这次好像不是这样,有点疑惑。所以用call missing处理 了下。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

9
dcyhfut 发表于 2012-11-4 11:27:31 |只看作者 |坛友微信交流群
非常谢谢上面几位,我自己用比较初级的做出来了
data aa(drop=sale type tiaoshu);
set weigui.xundyue1;
if type='t1' then t1=sale;
if type='t2' then t2=sale;
if type='t3' then t3=sale;if type='t4' then t4=sale;if type='t5' then t5=sale;
run;
proc sql;
create table aa1 as
select name,code,year,month,day,sum(t1) as t1,sum(t2) as t2,sum(t3) as t3,sum(t4) as t4,sum(t5) as t5 from aa
group by name,code,year,month,day
order by year, month ,day ,code;
quit;

使用道具

10
dcyhfut 发表于 2012-11-4 11:28:07 |只看作者 |坛友微信交流群
Imasasor 发表于 2012-11-4 11:14
为了避免不小心给人错误的代码,我还是稍稍修正了一下高手的小疏忽。
谢谢啦

使用道具

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

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

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

GMT+8, 2024-4-26 19:47