楼主: peijiamei
2395 4

[原创博文] 表格合并(二合并一) [推广有奖]

已卖:299份资源

学科带头人

75%

还不是VIP/贵宾

-

威望
3
论坛币
26157 个
通用积分
12.7133
学术水平
217 点
热心指数
343 点
信用等级
210 点
经验
75401 点
帖子
1099
精华
1
在线时间
2016 小时
注册时间
2007-11-15
最后登录
2016-3-21

楼主
peijiamei 发表于 2010-10-11 16:36:05 |AI写论文
50论坛币
codedateab
120.10.2
130.10.2
140.10.2
150.10.2
160.10.2
250.10.2
260.10.2
270.10.2
280.10.2
290.10.2
330.10.2
340.10.2
350.10.2
360.10.2
370.10.2


codedateab
1111114444
2222225555
3233336666



由上面的表格得到下面的表格,表1中的code是没有排序的,但是是聚集的,date排序过的。
请避免使用sql和proc sort,第二个表格中的观测必须在第三个表格中每一个code的第一条



codedateab
1111114444
120.10.2
130.10.2
140.10.2
150.10.2
160.10.2
2222225555
260.10.2
270.10.2
280.10.2
290.10.2
3233336666
330.10.2
340.10.2
350.10.2
360.10.2
370.10.2
关键词:coded code date Oded COD

本帖被以下文库推荐

沙发
hopewell 发表于 2010-10-11 16:36:06
  1. data one;
  2.     input code $ date a b;
  3. datalines;
  4. 1 2 0.1 0.2
  5. 1 3 0.1 0.2
  6. 1 4 0.1 0.2
  7. 1 5 0.1 0.2
  8. 1 6 0.1 0.2
  9. 2 5 0.1 0.2
  10. 2 6 0.1 0.2
  11. 2 7 0.1 0.2
  12. 2 8 0.1 0.2
  13. 2 9 0.1 0.2
  14. 3 3 0.1 0.2
  15. 3 4 0.1 0.2
  16. 3 5 0.1 0.2
  17. 3 6 0.1 0.2
  18. 3 7 0.1 0.2
  19. ;
  20. data two;
  21.     input code $ date a b;
  22. datalines;
  23. 1 1 1111 4444
  24. 2 2 2222 5555
  25. 3 2 3333 6666
  26. ;
  27. data out;
  28.     length code $8 date a b 8;
  29.     if _n_=1 then do;
  30.         declare hash h(hashexp:16,dataset:'two',ordered:'yes');
  31.         h.definekey('code');
  32.         h.definedata('date','a','b');
  33.         h.definedone();
  34.         call missing(code,date,a,b);
  35.     end;
  36.     do _n_=1 by 1 until(last.code);
  37.         set one;
  38.         by code;
  39.     end;
  40.     if h.find()=0 then output;
  41.     do _n_=1 to _n_;
  42.         set one;
  43.         output;
  44.     end;
  45. run;
复制代码
已有 5 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Actree + 1 + 1 观点有启发
crackman + 100 带peijiamei给hopewell发钱
soporaeternus + 1 + 1 + 1 继续学习
peijiamei + 2 + 2 向高手学习!
pobel + 1 + 1 + 1 学习了

总评分: 论坛币 + 100  学术水平 + 5  热心指数 + 5  信用等级 + 2   查看全部评分

观钓颇逾垂钓趣 种花何问看花谁

藤椅
pobel 在职认证  发表于 2010-10-11 17:34:33
表1中的code是没有排序的,但是是聚集的,那么需要在第一个BY语句后加NOTSORTED

    do _n_=1 by 1 until(last.code);
        set one;
        by code notsorted;
   end;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
peijiamei + 1 + 2 精彩帖子
hopewell + 1 + 1 + 1 我很赞同

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

和谐拯救危机

板凳
ghost125 发表于 2010-10-13 17:31:02
我也来凑个热闹,别忘了金币啊,呵呵

data one;

    input code $ date a b;

datalines;
1 2 0.1 0.2
1 3 0.1 0.2
1 4 0.1 0.2
1 5 0.1 0.2
1 6 0.1 0.2
2 5 0.1 0.2
2 6 0.1 0.2
2 7 0.1 0.2
2 8 0.1 0.2
2 9 0.1 0.2
3 3 0.1 0.2
3 4 0.1 0.2
3 5 0.1 0.2
3 6 0.1 0.2
3 7 0.1 0.2
;
run;
data two;

    input code $ date a b;

datalines;
1 1 1111 4444
2 2 2222 5555
3 2 3333 6666
;
run;
data one;
  set one;
  by code notsorted;
  output;
  if first.code then output;
run;

data one;
  modify one two;
  by code;
run;
已有 4 人评分学术水平 热心指数 信用等级 收起 理由
Actree + 1 + 1 观点有启发
peijiamei + 1 + 1 精彩帖子
hongxx + 1 + 1 好的意见建议
hopewell + 1 + 1 + 1 好的意见建议

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

报纸
peijiamei 发表于 2010-10-15 17:32:28
谢谢
我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

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

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