检索每组的“倒数第二个”数据

and*_*ang 2 r dplyr

我想检索每组的“倒数第二个”数据。目前,代码如下,使用“group_modify”两次。有没有可用的功能?(如何简单地使用当前代码)?谢谢!

所希望的结果在附图中的红色矩形中。

library(dplyr)

test_data <- data.frame(category=c("a","a","c","a","b","c","a","b","c"),
                        value=c(1.72,0.32,0.22,1.29,-0.49,0.61,1.24,0.58,0.26))


test_data %>%  arrange(category ) %>% 
  group_by(category) %>% 
  group_modify(~tail(.x,2)) %>% 
  group_modify(~head(.x,1))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Tar*_*Jae 5

我们可以使用nth(value, -2),它给出每组的倒数第二个:

library(dplyr)

  test_data %>%  
    arrange(category ) %>% 
    group_by(category) %>% 
    summarise(value1 = nth(value, -2))
Run Code Online (Sandbox Code Playgroud)
  category value1
  <chr>     <dbl>
1 a          1.29
2 b         -0.49
3 c          0.61
Run Code Online (Sandbox Code Playgroud)