Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R sqldf找到第二大_R_Sqldf - Fatal编程技术网

R sqldf找到第二大

R sqldf找到第二大,r,sqldf,R,Sqldf,我有这样一个数据帧数据 data id time var1 1 a 3 0 2 a 2 2 3 a 1 3 4 b 3 2 5 b 4 6 我想得到每个id的第二大时间行,如下所示: data2 id time var1 1 a 2 2 2 b 3 2 我尝试使用sqldf sqldf("select * from data order by time desc limit 2,1 gr

我有这样一个数据帧数据

data
  id time var1
1  a    3    0
2  a    2    2
3  a    1    3
4  b    3    2
5  b    4    6
我想得到每个id的第二大时间行,如下所示:

data2
  id time var1
1  a    2    2
2  b    3    2
我尝试使用sqldf

sqldf("select * from data order by time desc limit 2,1 group by id")
但我有一个错误:

Error in sqliteSendQuery(con, statement, bind.data) : 
  error in statement: near "group": syntax error
我还尝试:

select max(time),* from data where time not in(select max(time) from data group by id) group by id
但是我只得到了一个结果,我不能得到正确的答案


谢谢

尝试在值小于该id最大值的行中取最大值:

sqldf("select id, max(time) time, var1 
       from data a
       where time < (select max(b.time) 
                     from data b 
                     where b.id = a.id)
       group by id")

是否需要使用sqldf,或者您是否对其他方法感兴趣?dplyr看起来有点像SQL:df%>%group\U byid%>%arrangedesctime%>%slice2dplyr,谢谢!