楼主: peijiamei
3613 9

表的合并(填补缺失值)。 [推广有奖]

已卖:299份资源

学科带头人

75%

还不是VIP/贵宾

-

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

楼主
peijiamei 发表于 2010-10-11 14:58:18 |AI写论文
50论坛币
codedateab
11  
120.10.2
130.10.2
140.10.2
150.10.2
160.10.2
170.10.2
180.10.2
190.10.2
1100.10.2
1110.10.2
23  
240.10.2
250.10.2
260.10.2
270.10.2
280.10.2
290.10.2
2100.10.2
2110.10.2
2120.10.2
2130.10.2


codeab
1222333
2444555


根据上面的表格生成下面的表格。第一个表格中有的数据是缺失的,将表2的数据填补到相应的位置。

鉴于表格1的数据量太大,程序请避免使用sql和proc sort。表格1实际上date是排列好的了。每一个code的第一行数据a和b是缺失值。


codedateab
11222333
120.10.2
130.10.2
140.10.2
150.10.2
160.10.2
170.10.2
180.10.2
190.10.2
1100.10.2
1110.10.2
23444555
240.10.2
250.10.2
260.10.2
270.10.2
280.10.2
290.10.2
2100.10.2
2110.10.2
2120.10.2
2130.10.2
关键词:缺失值 coded code date Oded 缺失

本帖被以下文库推荐

我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

沙发
hopewell 发表于 2010-10-11 14:58:19
  1. data one;
  2.     infile datalines truncover;
  3.     input code date a b;
  4. datalines;
  5. 1 1
  6. 1 2 0.1 0.2
  7. 1 3 0.1 0.2
  8. 1 4 0.1 0.2
  9. 1 5 0.1 0.2
  10. 2 3
  11. 2 4 0.1 0.2
  12. 2 5 0.1 0.2
  13. 2 6 0.1 0.2
  14. 2 7 0.1 0.2
  15. 3 10
  16. 3 11 0.1 0.2
  17. 3 12 0.1 0.2
  18. 3 13 0.1 0.2
  19. ;
  20. data two;
  21.     input code a b;
  22. datalines;
  23. 1 222 333
  24. 2 444 555
  25. ;
  26. data out;
  27.     length date code a b 8.;
  28.     if _n_=1 then do;
  29.         declare hash h(hashexp:16,dataset:'two',ordered:'yes');
  30.         h.definekey('code');
  31.         h.definedata('a','b');
  32.         h.definedone();
  33.         call missing(code,a,b);
  34.     end;
  35.     set one;
  36.     by code;
  37.     if first.code then do;
  38.         rc=h.find();
  39.         if rc then call missing(a,b);
  40.     end;
  41.     drop rc;
  42. run;
复制代码
已有 2 人评分学术水平 热心指数 收起 理由
peijiamei + 3 运行的时候遇到一个问题,我的code是字符型的,该如何修改程序呢?
pobel + 1 + 1 我很赞同

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

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

藤椅
peijiamei 发表于 2010-10-11 16:00:22
hash看不懂,但是谢谢您的回复。
运行的时候遇到一个问题,我的code是字符型的,该如何修改程序呢?
我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

板凳
hopewell 发表于 2010-10-11 16:06:29
  1. data one;
  2.     infile datalines truncover;
  3.     input code $ date a b;
  4. datalines;
  5. a1 1
  6. a1 2 0.1 0.2
  7. a1 3 0.1 0.2
  8. a1 4 0.1 0.2
  9. a1 5 0.1 0.2
  10. a2 3
  11. a2 4 0.1 0.2
  12. a2 5 0.1 0.2
  13. a2 6 0.1 0.2
  14. a2 7 0.1 0.2
  15. a3 10
  16. a3 11 0.1 0.2
  17. a3 12 0.1 0.2
  18. a3 13 0.1 0.2
  19. ;
  20. data two;
  21.     input code $ a b;
  22. datalines;
  23. a1 222 333
  24. a2 444 555
  25. ;
  26. data out;
  27.     length date 8 code $8 a b 8.;
  28.     if _n_=1 then do;
  29.         declare hash h(hashexp:16,dataset:'two',ordered:'yes');
  30.         h.definekey('code');
  31.         h.definedata('a','b');
  32.         h.definedone();
  33.         call missing(code,a,b);
  34.     end;
  35.     set one;
  36.     by code;
  37.     if first.code then do;
  38.         rc=h.find();
  39.         if rc then call missing(a,b);
  40.     end;
  41.     drop rc;
  42. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
soporaeternus + 1 + 1 + 1 学习学习

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

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

报纸
peijiamei 发表于 2010-10-11 16:10:01
length date 8 code $8 a b 8.;

规定一样的长度 是不是必须的呀?
我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

地板
hopewell 发表于 2010-10-11 16:13:36
不是必须的.
已有 1 人评分学术水平 热心指数 收起 理由
peijiamei + 2 + 2 谢谢您!

总评分: 学术水平 + 2  热心指数 + 2   查看全部评分

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

7
sopching 发表于 2010-10-12 12:56:22
4# hopewell
前辈
if rc then call missing(a,b);  这句话有什么用,不解啊。已经匹配了 干嘛还要令a b缺失,而且删掉结果也没变,小弟hash不熟,还望指教。

8
soporaeternus 发表于 2010-10-12 13:04:15
7# sopching
匹配的话rc为0
故不匹配if才成立
Let them be hard, but never unjust

9
sopching 发表于 2010-10-12 14:08:52
8# soporaeternus
哦 明白了 我以为rc 取1是匹配成功呢。

10
shenliang_111 发表于 2011-12-19 20:56:43
sopching 发表于 2010-10-12 14:08
8# soporaeternus
哦 明白了 我以为rc 取1是匹配成功呢。
  1. data one;
  2. modify one two;
  3. by code;
  4. run;
复制代码

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

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