5

我正在将我通常使用的 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 系统之间的差异。

4

2 回答 2

2

不确定 sqldf,但为了获得有意义的结果,您应该按 SQL 中的所有关键变量进行分组。

于 2012-10-30T18:43:01.770 回答
0

SAS 中的结果可能有重复记录,而 R 中的结果没有

于 2014-01-23T18:03:23.030 回答