楼主: air320322
1471 10

数据的合并 [推广有奖]

  • 4关注
  • 0粉丝

讲师

81%

还不是VIP/贵宾

-

威望
0
论坛币
11536 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3829 点
帖子
242
精华
0
在线时间
988 小时
注册时间
2005-5-28
最后登录
2022-3-5

10论坛币

表1 A

varietyid

SJWEIGHT

S10468

0.106075

S10469

0.011771

表B

varietyid

WEIGHT

S10467

0.013815

S10468

0.158393

S10469

0.069556

想合并表A和B成下面的效果

varietyid

WEIGHT

   
SJWEIGHT         

S10467

0.013815

S10468

0.158393

0.106075

S10469

0.069556

0.011771

最佳答案

zhangzachary 查看完整内容

可以对生成的表格再做一次运算:
关键词:variety weights Weight Eight weigh

回帖推荐

不明真相的群众
沙发
zhangzachary 发表于 2012-2-8 17:04:59 |只看作者 |坛友微信交流群
air320322 发表于 2012-2-8 17:36
合并之后的SJWEIGHT值如果为缺失值,则赋值为0该怎么做呢?
可以对生成的表格再做一次运算:
  1. data want;
  2. set want;
  3. if missing(SJWEIGHT) then SJWEIGHT=0;
  4. if missing(WEIGHT) then WEIGHT=0;
  5. run;
复制代码
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

藤椅
zhangzachary 发表于 2012-2-8 17:09:19 |只看作者 |坛友微信交流群
  1. proc sort data=a; by varietyid; run;
  2. proc sort data=b; by varietyid; run;

  3. data want;
  4. merge b a;
  5. by varietyid;
  6. run;
复制代码
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

板凳
air320322 发表于 2012-2-8 17:24:53 |只看作者 |坛友微信交流群
zhangzachary
你好,谢谢,我该怎么把金币给你呢
不明真相的群众

使用道具

报纸
air320322 发表于 2012-2-8 17:36:22 |只看作者 |坛友微信交流群
合并之后的SJWEIGHT值如果为缺失值,则赋值为0该怎么做呢?
不明真相的群众

使用道具

地板
blueseali 发表于 2012-2-8 17:38:41 |只看作者 |坛友微信交流群
可用excellookup中的函数解决.公式为LOOKUP(A9,A$3:A$5,B$3:B$5)

使用道具

7
blueseali 发表于 2012-2-8 17:44:44 |只看作者 |坛友微信交流群
为方便操作,提供一个excel.

Book1.xls

13.5 KB

excel

使用道具

8
air320322 发表于 2012-2-8 17:46:42 |只看作者 |坛友微信交流群
blueseali
谢谢你的回答
我这里需要用SAS解决
不明真相的群众

使用道具

9
zhangzachary 发表于 2012-2-8 17:55:03 |只看作者 |坛友微信交流群
air320322 发表于 2012-2-8 17:24
zhangzachary
你好,谢谢,我该怎么把金币给你呢
这个我倒是不知道……发消息问问版主吧……
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

10
shenliang_111 发表于 2012-2-8 18:01:57 |只看作者 |坛友微信交流群
air320322 发表于 2012-2-8 17:46
blueseali
谢谢你的回答
我这里需要用SAS解决
  1. data a;
  2. input varietid $ sjweight;
  3. cards;
  4. S10468   0.106075
  5. S10469   0.011771
  6. ;
  7. data b;
  8. input  varietid $ weight;
  9. cards;
  10. S10467   0.013815
  11. S10468    0.158393
  12. S10469     0.069556
  13. ;
  14. /*method one*/
  15. proc sql noprint;
  16.   create table result1 as  
  17.     select b.*,case when(missing(a.sjweight)) then 0 else a.sjweight end as sjweight from
  18.       b left join a
  19.        on b.varietid=a.varietid;
  20.   quit;
  21. /*method two */;
  22. proc sort data=a;by varietid;run;
  23. proc sort data=b;by varietid;run;
  24. data result2;
  25. merge a(in=ina)
  26.       b(in=inb)
  27.           ;
  28. by varietid;
  29. if inb;
  30. if missing(sjweight) then sjweight=0;
  31. run;

复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
air320322 + 1 + 1 + 1 谢谢,你的答案很不错,只是zhangzachary最.

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

使用道具

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

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

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

GMT+8, 2024-5-1 03:13