dplyr:row_number()不使用sql表(SQLite)

时间:2017-09-07 12:23:35

标签: sql r sqlite dplyr tidyverse

如果我想创建一个包含带数据框的观察数的新列,我可以,

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())

错误:

  

此数据库不支持窗口函数row_number()

还有其他方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

你可以使用像这样的SQLite语法解决它

ERROR: /root/sdk-samples/WORKSPACE:17:12: Traceback (most recent call last):
File "/root/sdk-samples/WORKSPACE", line 15
    cc_library(name = "AffectivaSources", srcs = ..."]), ..."]))
File "/root/sdk-samples/WORKSPACE", line 17, in cc_library
    glob
name 'glob' is not defined

然后,您可以继续使用RSQLite::dbSendQuery(mydb, "ALTER TABLE mt ADD COLUMN i INTEGER") RSQLite::dbSendQuery(mydb, "UPDATE mt SET (i) = ROWID") 语法,例如在从数据库连接重新分配dplyrmt对象之后。

mt.sql

答案 1 :(得分:0)

SQLite不支持行号功能。

答案 2 :(得分:0)

您尝试过mtcars %>% mutate(i=row_number(desc(disp)))吗? 即使在SQL中,它也对我有用。