e*****r 发帖数: 621 | 1 我想把 DATASET 1 和 DATASET 2 merge成 DATASET 3 如下
DATASET 1 -
id var_1
1 5
1 10
2 15
DATASET 2 -
id var_2
1 3
1 6
1 8
2 7
DATASET 3 -
id var_1 var_2
1 5 3
1 5 6
1 5 8
1 10 3
1 10 6
1 10 8
2 15 7
实际上就是让两个dataset进行多对多,而不是一对多的merge. 可惜我比较弱,现在只做过一对多的merge。 请问什么方法最简便?多谢了! |
d*******1 发帖数: 854 | 2 proc sql noprint;
create table data3 as
select a.id, a.var_1,b.var_2 from data1 a, data2 b
where a.id=b.id order by a.id,a.var_1,b.var_2;
quit;
【在 e*****r 的大作中提到】 : 我想把 DATASET 1 和 DATASET 2 merge成 DATASET 3 如下 : DATASET 1 - : id var_1 : 1 5 : 1 10 : 2 15 : DATASET 2 - : id var_2 : 1 3 : 1 6
|
h******e 发帖数: 1791 | 3 可不可以用set 把它们stack,然后再改mssing value? |
D******6 发帖数: 6211 | 4 好像SAS的merge就是多对多的。。。你自己试一下看看。
【在 e*****r 的大作中提到】 : 我想把 DATASET 1 和 DATASET 2 merge成 DATASET 3 如下 : DATASET 1 - : id var_1 : 1 5 : 1 10 : 2 15 : DATASET 2 - : id var_2 : 1 3 : 1 6
|
e*****r 发帖数: 621 | 5 Thanks for the solution! That's very helpful.
Just a quick follow-up -
I got a warning message in the log file: WARNING: Variable ID already exists
on file. Is this OK? The product dataset 3 looks fine to me though.
【在 d*******1 的大作中提到】 : proc sql noprint; : create table data3 as : select a.id, a.var_1,b.var_2 from data1 a, data2 b : where a.id=b.id order by a.id,a.var_1,b.var_2; : quit;
|
d*******1 发帖数: 854 | 6 not sure why you got msg like that. could this happen only when you are
selecting id from both data 1 and data2.
exists
【在 e*****r 的大作中提到】 : Thanks for the solution! That's very helpful. : Just a quick follow-up - : I got a warning message in the log file: WARNING: Variable ID already exists : on file. Is this OK? The product dataset 3 looks fine to me though.
|
e*****r 发帖数: 621 | 7 说得太对了。
我把你给我的code简化了,不好意思,水平弱的表现-
PROC SQL;
CREATE TABLE dataset3 AS
SELECT *
FROM dataset1, dataset2
WHERE dataset1.id = dataset2.id;
QUIT;
然后dataset3大致看起来还可以。但不是很肯定,所以想就那个warning message核实
一下。 |