z**********i 发帖数: 12276 | 1 一个DATASET是标准参照,另外4个是4个季度的.他们都共有一个UNIQUE VARIABLE在这5
个DATASET中.
我想看一下,这4个季度与标准参照的差异,并且,看看这4个季度间的差异.
打算MERGE这5个DATASET. |
z**********i 发帖数: 12276 | 2 当我用PROC SQL时,发现,"THE EXECUTION OF THIS QUERY INVOLVES PERFORMING ONE
OR MORE CARTESIAN PRODUCT JOINS THAT CAN NOT BE OPTIMIZED."并且,很长时间也没
有完成.
请大家给点建议如何找到多个DATASET的不同,他们共同的VARIABLE是PROVNUM,并且,我
只要看这一个VARIABLE,其他的,不需要.
多谢!!
5
【在 z**********i 的大作中提到】 : 一个DATASET是标准参照,另外4个是4个季度的.他们都共有一个UNIQUE VARIABLE在这5 : 个DATASET中. : 我想看一下,这4个季度与标准参照的差异,并且,看看这4个季度间的差异. : 打算MERGE这5个DATASET.
|
p********r 发帖数: 1465 | 3 data final;
merge standard(in=a) q1(in=b) q2(in=c) q3(in=d) q4(in=f);
by UNIQUE VARIABLE;
if a and not b then ...;
if a and not c then ...;
if a and not d then ...;
run; |
z**********i 发帖数: 12276 | 4 多谢回复!
后来,我是这样做的。
data standarda;
set standard;
provnum_standard=provnum;
keep provnum provnum_standard;
run;
....
....
data total;
merge standarda q1a q2a q3a q4a;
by provnum;
run;
然后,我用proc sql; count.这时,如果count是5,说明他们都与standard相同,如果
小于,拿出来做为单独的dataset看看。
开始,想直接用sql,发现不行,太慢。
感觉方法很笨,实际工作中就是这些基本的问题。
【在 p********r 的大作中提到】 : data final; : merge standard(in=a) q1(in=b) q2(in=c) q3(in=d) q4(in=f); : by UNIQUE VARIABLE; : if a and not b then ...; : if a and not c then ...; : if a and not d then ...; : run;
|
p********r 发帖数: 1465 | 5 那这样岂不是会有N种情况N个不同的dataset? |
p********a 发帖数: 5352 | 6 用STANDARD LEFT JOIN 4 quarters然后用CASE WHEN a.prov_num = b.prob_num then
0 else 1 end as q1diff, ...q4diff 不就行了? |
z**********i 发帖数: 12276 | 7 对。
95%+都是在5个DATASET里都有,个别的出现在其中的一个或几个quarter.
但还有些情况出现在个别的quarter里,但没有在standard里,为什么呢?
所以,只要不同的就列出来,然后,看看,为什么
多谢回复!
【在 p********r 的大作中提到】 : 那这样岂不是会有N种情况N个不同的dataset?
|
z**********i 发帖数: 12276 | 8 多谢回复!
发现,sql比data step还是慢很多,在merge的时候。
另外,我也想看看,在4 quarters出现的,却没有包含在standard里的。
或许可以变成full join.
then
【在 p********a 的大作中提到】 : 用STANDARD LEFT JOIN 4 quarters然后用CASE WHEN a.prov_num = b.prob_num then : 0 else 1 end as q1diff, ...q4diff 不就行了?
|
|