楼主: LHhome
2425 6

transpose导致日期顺序乱了,如何解决? [推广有奖]

  • 0关注
  • 0粉丝

已卖:3份资源

硕士生

54%

还不是VIP/贵宾

-

威望
0
论坛币
2941 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
22516 点
帖子
9
精华
0
在线时间
345 小时
注册时间
2013-8-31
最后登录
2015-6-4

楼主
LHhome 发表于 2014-5-17 13:28:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
以下代码,转置以后时间顺序乱了,2007/1/1这个日期反而在最后面了,求助大神如何根本解决。
data test;
        input name$ date yymmdd10. value ;
        format date yymmdd10.;
datalines;
A 2007/1/2  2
A 2007/1/3  3
A 2007/1/4  4
A 2007/1/5  5
A 2007/1/6  6
A 2007/1/7  7
B 2007/1/1  8
B 2007/1/2  9
;
run;
proc transpose data=test out=test;
        by name;
        id date;
        var value;
run;
如果日期时间长了,比如14天,那乱了以后要手动调整真的非常费时

二维码

扫码加我 拉你入群

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

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

关键词:Transpose Trans pose RAN ans 如何

回帖推荐

zhengbo8 发表于5楼  查看完整内容

我给你写了个宏变量,日期再多您就不用自己写日期了。

沙发
zhengbo8 发表于 2014-5-17 15:18:01
  1. data test;
  2.         input name$ date yymmdd10. value ;
  3.         format date yymmdd10.;
  4. datalines;
  5. A 2007/1/2  2
  6. A 2007/1/3  3
  7. A 2007/1/4  4
  8. A 2007/1/5  5
  9. A 2007/1/6  6
  10. A 2007/1/7  7
  11. B 2007/1/1  8
  12. B 2007/1/2  9
  13. ;
  14. run;


  15. proc transpose data=test out=test;
  16.         by name;
  17.         id date;
  18.         var value;
  19. run;

  20. data test;
  21.         retain name _name_ _2007N01N01-_2007N01N07 ;
  22.         set test;
  23. run;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

藤椅
LHhome 发表于 2014-5-17 15:44:13
zhengbo8 发表于 2014-5-17 15:18
非常感谢你的帮忙,不知道有什么办法一劳永逸,因为每次转置的时间都不一样,如果每次都要找到第一天和最后一天来重新排列顺序,很麻烦,感激不尽。

板凳
bbear 发表于 2014-5-17 16:10:38
加一個虛 name 0  <--- 以NAME 排序後在第一筆,
包含所有的日期.

data test;
        input name$ date yymmdd10. value ;
        format date yymmdd10.;
datalines;
0 2007/1/1  8
0 2007/1/2  9
0 2007/1/3  3
0 2007/1/4  4
0 2007/1/5  5
0 2007/1/6  6
0 2007/1/7  7
A 2007/1/2  2
A 2007/1/3  3
A 2007/1/4  4
A 2007/1/5  5
A 2007/1/6  6
A 2007/1/7  7
B 2007/1/1  8
B 2007/1/2  9
;
run;

报纸
zhengbo8 发表于 2014-5-17 16:27:33
我给你写了个宏变量,日期再多您就不用自己写日期了。

  1. data test;
  2.         input name$ date yymmdd10. value ;
  3.         format date yymmdd10.;
  4. datalines;
  5. A 2007/1/2  2
  6. A 2007/1/3  3
  7. A 2007/1/4  4
  8. A 2007/1/5  5
  9. A 2007/1/6  6
  10. A 2007/1/7  7
  11. B 2007/1/1  8
  12. B 2007/1/2  9
  13. ;
  14. run;


  15. proc transpose data=test out=test;
  16.         by name;
  17.         id date;
  18.         var value;
  19. run;


  20. proc sql noprint;
  21.         select name into :datelist separated by " "
  22.                 from dictionary.columns
  23.                 where libname='WORK' and memname='TEST' and name not in ('name','_NAME_')
  24.         order by name;
  25. quit;


  26. data test;
  27.         retain name _name_ &datelist. ;
  28.         set test;
  29. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
LHhome + 1 + 1 + 1 精彩帖子

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

地板
LHhome 发表于 2014-5-17 16:49:45
zhengbo8 发表于 2014-5-17 16:27
我给你写了个宏变量,日期再多您就不用自己写日期了。
牛人啊,如果能够简单解释一下宏语句的意思就更好了,呵呵,非常感谢。

7
zhengbo8 发表于 2014-5-17 16:55:06
这是数据字典的应用。您可以搜索 sas 数据字典。

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

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