全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
41854 22
2012-12-30
我回答,至少四种
1.merge;
2.set;
3.SQL;
4.hash.
我比较懒,嫌烦,不愿再接着解释。现在想想,应该还有两种:
proc iml;
proc datasets.

抛个砖,大家来讲讲每一种的代码怎么写,然后要注意什么,比如合并数据集,还讲究主数据集,哪个在前,哪个在后;以及左连,右连,内连 等等。
辛苦大家了,我叫他到论坛来看就行了。

二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-30 18:31:54
参与讨论的,我都给你们加点。
然后我的所有论坛币全分给你们,不过就21个,每楼5个,先来先得。
二维码

扫码加我 拉你入群

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

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

2012-12-31 11:27:16
还有一种是 PROC append ,不过这个是用来追加数据集的(也就是竖向的合并)。
示例:现有数据集A(包含变量 X1,X2,X3)和数据集B(包含变量 X1,X2,X3 ) ,将B追加到A表。
复制代码
注意事项:所需追加的数据集中变量的名称、数据类型、长度(字符型可能会被截断)要保持一致。
二维码

扫码加我 拉你入群

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

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

2012-12-31 11:32:26
看到楼主总结的甚好,我来回复个
1 、set a b
     纵向合并a、b数据集,先生成pdv,有些变量在另一个数据集里面没有,合并的时候对应的变量为缺失值。
2、双set语句(set a;set b)
先生成pdv,对于a、b数据集里面都有的变量则b数据值代替a里面的数据值。对于没有的变量则保存下来了。而且观测值个数取决于最小的那个。
例:
data a;
input x y;
cards;
1 2
2 3
;
run;
data b;
input x ;
cards;
2
3
;
run;
data c;
set a ;
set b ;
by x;
run;
proc print data=c;
run;

3、merge语句(横向合并)
  注意:merge合并的数据必须根据某一变量先排序了,之后才能根据某一变量合并。
Merge语句还有一个重要的关键字可以使用(in)。用in判断可以实现类似于sql里面左联右连。
4、sql语句
   Sql语句之强大不用多说,此处列举一些注意地方吧!
(1)        merge语句合并与sql/where合并不太一样(由旨多对多的连接)
sql是生成笛卡尔积,之后根据where判断,而merge语句是根据排序后的顺序,merge连接是循序的(根据sas advance书上应该是如此翻译,不太好理解)。请大家指教。
例:为什么不是1-1不是4个,merge到底是怎么弄的?
data a;
input x y;
cards;
1 2
1 3
2 3
;
run;
data b;
input x ;
cards;
1
1
2
3
;
run;
data c;
merge a b;
by x;
run;
proc print data=c;
run;



   
二维码

扫码加我 拉你入群

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

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

2012-12-31 15:37:23
龙潭丰乐 发表于 2012-12-31 11:32
看到楼主总结的甚好,我来回复个
1 、set a b
     纵向合并a、b数据集,先生成pdv,有些变量在另一个数据 ...
merge是按照BY的变量位置进行匹配的
二维码

扫码加我 拉你入群

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

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

2012-12-31 18:18:48
怎么给他人加论坛币啊?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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