我正在将我通常使用的 SAS 程序重写到 R 中。SAS 程序中的许多语句都是用 proc sql 编写的,所以为了便于编程,我在 R 中使用 sqldf 复制这些语句。所有的 sql 代码sqldf 的工作方式与 SAS 相同,但以下语句除外:
SAS:
proc sql;
create table merged32 as
select max(ctf) as ctf,
max(ctms) as ctms,
max(site_name) as site_name,
provider_id, npi,
first_name, middle_name, last_name, specialty,
address_1, city, state, site_ct, zip, site_key
from merged2
group by 9,10,11,12,14,15;
quit;
run;
sqldf:
sqldf("select max(ctf) as ctf,
max(ctms) as ctms,
max(site_name) as site_name,
provider_id, npi,
first_name, middle_name, last_name, specialty,
address_1, city, state, site_ct, zip, site_key
from merged2
group by 9,10,11,12,14,15")
在 SAS 中,它返回一个有 1878 行的数据集;在 sqldf 中,一个 1375 的数据框。
proc sql 和 sqldf 之间是否存在任何可能导致此问题的主要差异,或者通常需要考虑这些差异?我没有提供数据,因为 1)数据集很大,2)我更感兴趣的是了解两个 sql 系统之间的差异。