楼主: rocky1987
1968 7

[问答] 原始数据调整 [推广有奖]

  • 0关注
  • 0粉丝

VIP1

高中生

55%

还不是VIP/贵宾

-

威望
0
论坛币
3363 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
475 点
帖子
30
精华
0
在线时间
22 小时
注册时间
2012-1-13
最后登录
2013-8-27

楼主
rocky1987 发表于 2012-6-4 22:56:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请各位大神帮助,我有下面一张原始数据表格:

      时间             公司 event1   event2   event3
    01012002         A        1          .           .
    01012002         A        .           1          .
    04122006         A        1          .           .
    20122007         B        .           1          .
    20122007         B        .           .          1
...................................................................

以此类推, 其中event1,2,3代表某公司在当天发生的事件,1表示发生,.表示未发生。由于在原始数据中,同一天发生的不同事件是分开列出的,比如A公司在2002年1月1号发生了事件1和事件2。 现在我想把每个公司的事件按照发生的时间合并在一起,也就是变成以下格式:

时间             公司  event1 event2 event3
01012002        A       1         1           .
04122006        A       1          .           .
20122007        B       .          1           1

请问一下这样的调整该如何进行,谢谢




二维码

扫码加我 拉你入群

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

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

关键词:数据调整 原始数据 Event vent Even 数据

沙发
mymine 发表于 2012-6-5 07:54:47
如果这个1是记录的数字型,可以按照“时间+公司”分类求和

藤椅
tj0412ymy 发表于 2012-6-5 08:23:15
  1. data test;
  2. input time $ company $ event1 event2 event3;
  3. cards;
  4. 01012002         A        1          .           .
  5. 01012002         A        .           1          .
  6. 04122006         A        1          .           .
  7. 20122007         B        .           1          .
  8. 20122007         B        .           .          1
  9. ;
  10. run;

  11. proc sql;
  12. select time,company,case when(sum(event1<>.)=1) then 1 else . end as event1,
  13.                               case when(sum(event2<>.)=1) then 1 else . end as event2,
  14.                               case when(sum(event3<>.)=1) then 1 else . end as event3
  15. from test
  16. group by  time,company
  17. ;
  18. quit;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

板凳
webgu 发表于 2012-6-5 09:11:50
tj0412ymy 发表于 2012-6-5 08:23
发现你很喜欢用SQ,运用确实很熟。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

报纸
chendonghui1987 发表于 2012-6-5 10:53:03
不错,很好的方法

地板
遇女心惊 发表于 2012-6-5 14:30:30
  1. data test;
  2. input time $ company $ event1 event2 event3;
  3. cards;
  4. 01012002         A        1          .           .
  5. 01012002         A        .           1          .
  6. 04122006         A        1          .           .
  7. 20122007         B        .           1          .
  8. 20122007         B        .           .          1
  9. ;
  10. run;

  11. proc sort data=test; by time company event1-event3; run;

  12. data last;
  13.         set test;
  14.         by time company event1-event3;
  15.         retain new1-new3;

  16.         array even(*) event1-event3;
  17.         array new(*) new1-new3;

  18.         do i=1 to dim(even);
  19.         if first.company then do; if even(i)=1 then new(i)=1; else new(i)=.; end;
  20.                 else if even(i)=1 then new(i)=1;
  21.         end;

  22.         if last.company;
  23.         drop event1-event3 i;
  24.         rename new1=event1 new2=event2 new3=event3;
  25. run;
复制代码

7
rocky1987 发表于 2012-6-12 20:17:15
tj0412ymy 发表于 2012-6-5 08:23
非常谢谢,很实用的代码!

8
rocky1987 发表于 2012-6-12 20:17:59
遇女心惊 发表于 2012-6-5 14:30
太感谢了!·

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 17:16