我有两个数据集 DS1
和 DS2
。 DS1
是 100,000 行 x 40 列,DS2
是 20,000 行 x 20 列。如果某些字段匹配 DS2
,我实际上需要从 DS1
中提取 COL1
。
由于我对 SAS 非常陌生,所以我试图坚持使用 SQL 逻辑。
所以基本上我做了(拍摄版)
proc sql;
...
SELECT DS1.col1
FROM DS1 INNER JOIN DS2
on DS1.COL2=DS2.COL3
OR DS1.COL3=DS2.COL3
OR DS1.COL4=DS2.COL2
...
大约一个小时后,它仍在运行,但我收到来自 SAS 的电子邮件,说我正在使用 700gb 左右。是否有更好更快的 SAS 方式来执行此操作?
最佳答案
我会使用 3 个单独的查询并使用 UNION
proc sql;
...
SELECT DS1.col1
FROM DS1 INNER JOIN DS2
on DS1.COL2=DS2.COL3
UNION
SELECT DS1.col1
FROM DS1 INNER JOIN DS2
On DS1.COL3=DS2.COL3
UNION
SELECT DS1.col1
FROM DS1 INNER JOIN DS2
ON DS1.COL4=DS2.COL2
...
关于join - 在 SAS 中加入两个数据集的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28902419/