我正在将我通常使用的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系统之间的差异。
发布于 2012-10-31 02:43:02
不确定sqldf,但为了获得有意义的结果,您应该在SQL中按所有关键变量进行分组。
发布于 2014-01-24 02:03:23
SAS中的结果可能有重复的记录,而R中的结果没有重复的记录
https://stackoverflow.com/questions/11784115
复制相似问题