我正在重写我通常用于R的SAS程序.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系统之间的差异。
答案 0 :(得分:2)
不确定sqldf,但是为了获得有意义的结果,您应该按SQL中的所有关键变量进行分组。
答案 1 :(得分:0)
SAS中的结果可能有重复的记录,而R中的结果不是