【发布时间】:2023-02-07 23:39:34
【问题描述】:
我有这个问题
library(dplyr)
problem = data.frame(id = c(1,1,1,2,2,2), var1 = c(5,4,3, 6,5,4), var2 = c(99,12,32,88,9,8))
对于每个 id,我只想保留具有 var1 的第二大值的行。我尝试了不同的方式(dplyr,base):
problem %>%
group_by(id) %>%
slice_tail(2, -var1)
problem[with(problem, ave(var1, id, FUN = function(x) x == tail(sort(x), 2)[1])), ]
第一个代码不起作用,第二个代码给出了错误的答案。
我究竟做错了什么?
【问题讨论】:
-
slice_tail中没有排序,它只是使用行的顺序。
标签: r