有没有一种方法可以使用sqldf在R中执行滞后运算

有没有一种方法可以在SQL中执行以下操作。我的意思是在R中使用sqldf包

asdff <- data.frame(a=c(1,3,45))
asdff$b <- c(NA,asdff$a[-nrow(asdff)])
   a  b
1  1 NA
2  3  1
3  3  3
4 45  3
fanfansky1 回答:有没有一种方法可以使用sqldf在R中执行滞后运算

其中任何一个都会落后于a列:

sqldf("select a,lag(a) over () as b from asdff")

sqldf("select a,lag(a) over (order by rowid) as b from asdff")

sqldf("select x.a,y.a as b 
  from asdff x 
  left join asdff y on x.rowid = y.rowid + 1")

如果数据具有对应于时间的列,则可以使用该列,并允许相对于时间的滞后,即使这些时间之前数据帧尚未排序。借助内置的BOD数据框(具有Timedemand列)

sqldf("select *,lag(demand) over (order by Time) as prev from BOD")

有关更多信息,请参见:https://www.sqlite.org/windowfunctions.html

本文链接:https://www.f2er.com/3166480.html

大家都在问