5

私は、通常使用する SAS プログラムを R に書き直している最中です。SA​​S プログラムの多くのステートメントは proc sql で記述されているため、プログラミングを容易にするために、R で sqldf を使用してこれらのステートメントを複製しています。すべての SQL コード次のステートメントを除いて、SAS と同じように sqldf で機能します。

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) 2 つの SQL システムの違いを知りたいという理由から、データを提供しませんでした。

4

2 に答える 2

2

sqldf についてはわかりませんが、意味のある結果を得るには、SQL のすべてのキー変数でグループ化する必要があります。

于 2012-10-30T18:43:01.770 に答える