楼主: zhengbo8
15578 12

[问答] MERGE横向一对多合并时,是一在前还是多在前? [推广有奖]

  • 0关注
  • 27粉丝

教授

30%

还不是VIP/贵宾

-

威望
0
论坛币
9352 个
通用积分
4295.0362
学术水平
157 点
热心指数
173 点
信用等级
130 点
经验
66005 点
帖子
642
精华
0
在线时间
1964 小时
注册时间
2009-10-6
最后登录
2024-4-3

初级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,我看有的书说一在前,有的又说多在前?


二维码

扫码加我 拉你入群

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

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

关键词:Merge 一对多

回帖推荐

yongyitian 发表于12楼  查看完整内容

一般来说,第二个数据集是用于更新(或者说覆盖)数据集1中的相同的观测,和合并dataset2的新变量到 dataset1。 以下示例显示了4种不同情况下的merge,1对1,1对多,多 对1,和多对多条观察合并。在数据集中s表示一,m为多. Look carefully the data1 and data2 and result tables; you could get a better understanding of the merge. data data1; input a b b1 c1 $; datalines; 1 101 101 s 2 201 201 s 3 401 401 m ...

本帖被以下文库推荐

受到警告 沙发
EDDED 发表于 2012-12-18 23:02:10 |只看作者 |坛友微信交流群
提示: 受到警告  jigesi 灌水 2012-12-18 23:18

使用道具

藤椅
a6566792 在职认证  发表于 2012-12-19 09:08:52 |只看作者 |坛友微信交流群
是后进来的数据覆盖前面的数据

使用道具

板凳
zhengbo8 发表于 2012-12-19 09:24:56 |只看作者 |坛友微信交流群
a6566792 发表于 2012-12-19 09:08
是后进来的数据覆盖前面的数据
我指的是
MERGE 数据集1 数据集2;
到底数据集1是主数据集,即一(一对多中的一)?
还是数据集1是更新数据集,即多(一对多中的多)?
我看不同书有不同说法?

使用道具

报纸
a6566792 在职认证  发表于 2012-12-19 09:31:23 |只看作者 |坛友微信交流群
不是很理解你说的一和多,如果是你上面写的那样的话那就是数据2覆盖数据1,一对多还是多对一那要看你by的变量,如data1中有1,1,2,data2中有1,2;那就是data2中的1分别对应data1中的两个1;同理,相反。

使用道具

地板
zhengbo8 发表于 2012-12-19 09:35:20 |只看作者 |坛友微信交流群
a6566792 发表于 2012-12-19 09:31
不是很理解你说的一和多,如果是你上面写的那样的话那就是数据2覆盖数据1,一对多还是多对一那要看你by的变 ...
一对多匹配指的是一个数据集的一个观测值与另一个数据集中的多个观测值匹配。

使用道具

7
henryyhl 发表于 2012-12-19 09:37:22 |只看作者 |坛友微信交流群
如果两个数据集有除了by 变量之外还有相同的变量的话,后面数据**覆盖前面数据集中的那个相同的变量。
例如set1
a b $ c
1 s    34
2 t   39
3 w  45

set 2
a c d
1 35 19
1 36 20
2 40 25
3 50 20
3 39 28
merge set1 set2后的结果应该是
a b$ c d
1 s 35 19
1 s 36 20
2 t 40 25
3 w 50 20
3 w 39 28
merge 之前也要分别对数据集按照by变量排序
It's not going to be easy, but it is going to be worth it.

使用道具

8
zhengbo8 发表于 2012-12-19 09:42:42 |只看作者 |坛友微信交流群
henryyhl 发表于 2012-12-19 09:37
如果两个数据集有除了by 变量之外还有相同的变量的话,后面数据**覆盖前面数据集中的那个相同的变量。
例如 ...
对不起,可能我描述得不好,问题是这样:
数据集a
Num   VarA
1         A1
3         A2
数据集b
Num    VarB
1         B1
2         B2
2         B3
3         B4
3         B5

DATA c;
     MERGE a b;
     BY Num;
RUN;

对于变量Num,数据集a、b的观测值是一对多吧?
MERGE a b;这里是a在前面,还是b在前面?我看不同书说法不一样。

使用道具

9
henryyhl 发表于 2012-12-19 09:49:00 |只看作者 |坛友微信交流群
zhengbo8 发表于 2012-12-19 09:42
对不起,可能我描述得不好,问题是这样:
数据集a
Num   VarA
这个应该不会影响by 变量的顺序。前后都无所谓的。只是两个数据集有相同变量的话就得考虑是否有重名的变量,否则后面会覆盖前面。个人感觉一对多和多对一是一样的。
It's not going to be easy, but it is going to be worth it.

使用道具

10
a6566792 在职认证  发表于 2012-12-19 12:57:00 |只看作者 |坛友微信交流群
zhengbo8 发表于 2012-12-19 09:35
一对多匹配指的是一个数据集的一个观测值与另一个数据集中的多个观测值匹配。
之前已经说明了,如果data1  有观测1 ,1,1,data2有观测1,那么data2会产生三个重复观测,反之亦然

使用道具

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

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

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

GMT+8, 2024-4-20 10:34