dplyr:row_number()不使用sql表(SQLite)
如果我想创建一个包含观测值和数据帧的新列,我可以dplyr:row_number()不使用sql表(SQLite),sql,r,sqlite,dplyr,tidyverse,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()) mydb%变异(i=row\u number())
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())
mydb%变异(i=row\u number())
错误:
此数据库不支持窗口函数行号()
有没有其他方法可以解决这个问题?您可以使用类似这样的SQLite语法来解决这个问题
RSQLite::dbSendQuery(mydb, "ALTER TABLE mt ADD COLUMN i INTEGER")
RSQLite::dbSendQuery(mydb, "UPDATE mt SET (i) = ROWID")
然后,您可以继续使用dplyr
语法,就像从db连接重新分配mt
到mt.sql
对象之后一样
mt.sql=tbl(mydb, "mt")
mt.sql %>% select(mpg, i) # e.g.
SQLite不支持行号功能。您是否尝试了mtcars%>%mutate(i=行号(desc(disp)))
?
即使在SQL中,它也适用于我。您可以改用1:n(.)
吗?错误:此数据库不支持窗口函数n()。。。另外dim(mt.sql)
returnsc(NA,11)
…您看过了吗?我认为在sql中,如果不运行查询,您就无法知道输出的行数,因此我认为这与dplyr的延迟评估原则和数据库背道而驰。您可以直接运行查询SELECT COUNT*FROM mt
。或者altertable…
如果您想修改服务器上的表,我正在尝试编写一个函数来对sql表进行计算,因此我使用dplyr。我需要的功能,以正常的dfs以及工作。谢谢你的帮助。但这意味着什么?