楼主: 冰棱
3543 3

merge合并的原理 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
344 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1995 点
帖子
107
精华
0
在线时间
118 小时
注册时间
2006-2-27
最后登录
2018-6-15

楼主
冰棱 发表于 2012-11-8 11:59:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有两个数据集:a:

                                         Obs    x    y

                                          1     1    AA

                                          2     2    .

                                          3     2    BB

                                          4     3    .

                                          5     6    DD


b:

                                         Obs    x     y

                                         1     1    AAA

                                         2     2     .     

                                         3     2    BBB

                                         4     2    CCC

                                         5     4    DD


执行如下代码:merge a b ;by x;会出现如下结果:

                                         Obs    x     y

                                         1     1    AAA  

                                         2     2     .   

                                         3     2    BBB   

                                         4     2    CCC   

                                         5     3     .     

                                         6     4    DD         

                                         7     6    DD
不明白的地方,

1)当扫描至A的第二条记录时,会在B中扫描3次,扫描完以后,会在新数据集中产生3条X=2的记录;

此时指针为何跳过了A的第3条记录(也就是第2个X=2的记录?)不是应该再输出3条X=2的记录吗?


2)扫描到A的第二条记录时,在B中还是从第一条记录开始扫吗?



二维码

扫码加我 拉你入群

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

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

关键词:Merge obs 数据集 不明白

回帖推荐

pobel 发表于2楼  查看完整内容

x=2时SAS执行情况是这样的: 1,取A的第二条(obs=2),取B的第二条(obs=2),B中y值覆盖掉原来A中y值,输出; 2. 判断A和B中下一条是否还属于同一组(x的值是否还为2),如果还是都等于2,则取下一条。也就是A和B的第三条。同样B中y值“BBB”会覆盖掉A中y值“BB”,输出; 3. A中下一条记录x值不为2,B中下一条仍为2,因此只从B中取第四条记录,“CCC”覆盖“BBB”,输出; 4. A和B下一条都不是2,转向merge下一组。

沙发
pobel 在职认证  发表于 2012-11-8 12:38:49
x=2时SAS执行情况是这样的:
1,取A的第二条(obs=2),取B的第二条(obs=2),B中y值覆盖掉原来A中y值,输出;
2. 判断A和B中下一条是否还属于同一组(x的值是否还为2),如果还是都等于2,则取下一条。也就是A和B的第三条。同样B中y值“BBB”会覆盖掉A中y值“BB”,输出;
3. A中下一条记录x值不为2,B中下一条仍为2,因此只从B中取第四条记录,“CCC”覆盖“BBB”,输出;
4. A和B下一条都不是2,转向merge下一组。
和谐拯救危机

藤椅
冰棱 发表于 2012-11-8 13:46:02
pobel 发表于 2012-11-8 12:38
x=2时SAS执行情况是这样的:
1,取A的第二条(obs=2),取B的第二条(obs=2),B中y值覆盖掉原来A中y值,输 ...
明白了。谢谢!

板凳
さsけ 发表于 2012-11-20 23:08:05
soga、

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 03:47