如果我想创建一个新列,其中包含带有数据帧的观察编号,则可以,
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()
还会有其他方法解决此问题吗?
最佳答案
您可以通过使用像这样的SQLite语法来解决它
RSQLite::dbSendQuery(mydb, "ALTER TABLE mt ADD COLUMN i INTEGER")
RSQLite::dbSendQuery(mydb, "UPDATE mt SET (i) = ROWID")
然后,您可以继续使用
dplyr
语法,例如将mt
从数据库连接重新分配给mt.sql
对象之后。mt.sql=tbl(mydb, "mt")
mt.sql %>% select(mpg, i) # e.g.
关于sql - dplyr:row_number()不适用于sql表(SQLite),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46096268/