全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2462 9
2015-11-18
data person;
     input name $ sex $;
         cards;
MARY F
ANN  F
TOM  M
         ;
data place;
     input name $ city $ region;
     cards;
MARY MIAMI 2
ANN TAMPA 6
JOSE ERIE 5
MARY TAMPA 7
;
/*proc sort data=person;
by name;
proc sort data=place;  
by name;*/
data  result;
      merge person place;
      *by name;
proc  print;
      title'DATA SET RESULT';
run;


上述程序,运行出来的结果是:
obs  name    sex  city    region
1      MARY    F    MIAMI    2
2      ANN      F    TAMPA   6
3      JOSE    M    ERIE      5
4      MARY          TAMPA   7
merge语句是合并数据集,但是上面的运行结果中,并没有把person数据集中的TOM观测合并进来,这是为什么呢?
盼各路大侠前来解答~~

二维码

扫码加我 拉你入群

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

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

全部回复
2015-11-18 10:34:38
你把by语句comment掉了,那他就是按obs,也就是按行merge。结果就是,TOM那条就是第三条,name的值被place表的name字段JOSE覆盖。
解决方法,目测是应该用By statement,按名字进行匹配;或者你只要把后面place的name重命名,就可以理解了。
二维码

扫码加我 拉你入群

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

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

2015-11-18 12:34:11
prince315 发表于 2015-11-18 10:34
你把by语句comment掉了,那他就是按obs,也就是按行merge。结果就是,TOM那条就是第三条,name的值被place表 ...
你的意思是说,我上面在by前面放了*的意思么?如果把*by name换成by name/statement,出来的结果是
obs  name      city       region
1      MARY     MIAMI     2
2      ANN      TAMPA    6
3      JOSE      ERIE       5
4      MARY    TAMPA    7
即是数据集 place的结果……
如果把place的name变量重命名,数据集中的有些内容会重复哦。
二维码

扫码加我 拉你入群

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

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

2015-11-18 14:29:05
mzhua1989 发表于 2015-11-18 12:34
你的意思是说,我上面在by前面放了*的意思么?如果把*by name换成by name/statement,出来的结果是
obs  ...
额,不需要加后面的那个"/statement",然后加了“*”其实就是comment掉,不起作用。
你这边,只需要把星号去掉就可以了
二维码

扫码加我 拉你入群

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

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

2015-11-18 15:06:32
prince315 发表于 2015-11-18 14:29
额,不需要加后面的那个"/statement",然后加了“*”其实就是comment掉,不起作用。
你这边,只需要把星 ...
嗯,我的意思是用by name 或者by statement,我都试过,但出来的结果都是我上面写的那个,即数据集 place的结果,好奇怪??感觉跟merge没啥关系了
二维码

扫码加我 拉你入群

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

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

2015-11-18 16:53:27
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群