2017-09-07 8 views
2

私はdplyr:ROW_NUMBER()SQLテーブルで作業していない(SQLiteの)

mtcars %>% mutate(i=row_number()) 

しかし、ROW_NUMBER(、私ができるデータフレームとの観測番号を含む新しい列を作成する場合は)SQLテーブルでは動作しません。 。

mydb <- dbConnect(RSQLite::SQLite(), "") 
dbWriteTable(mydb, "mt", mtcars) 
mt.sql=tbl(mydb, "mt") 
mt.sql %>% mutate(i=row_number()) 

エラー:

Window function row_number() is not supported by this database

は、この問題を回避する他の方法があるだろうか?あなたはこの

RSQLite::dbSendQuery(mydb, "ALTER TABLE mt ADD COLUMN i INTEGER") 
RSQLite::dbSendQuery(mydb, "UPDATE mt SET (i) = ROWID") 

のようにSQLiteの構文を使用して、それを回避することができ

+0

代わりに '1:n(。)'を使用できますか? – loki

+0

エラー:このデータベースではウィンドウ関数 'n()'はサポートされていません – user8542010

+0

興味深い...また 'dim(mt.sql)'は 'c(NA、11)' ... – loki

答えて

0

次に、あなたはmt.sqlオブジェクトへのあなたのDB接続からの再割り当てmt後のようなdplyr構文を使用して行くことができます。

mt.sql=tbl(mydb, "mt") 
mt.sql %>% select(mpg, i) # e.g. 
+0

私はSQLテーブルの計算を行う関数を書くので、imはdplyrを使用しています。私は、通常のdfsでも動作する関数が必要です。ご協力いただきありがとうございます。 – user8542010

関連する問題