r - Select first and last row from grouped data -


question

using dplyr, how select top , bottom observations/rows of grouped data in 1 statement?

data & example

given data frame

df <- data.frame(id=c(1,1,1,2,2,2,3,3,3),                   stopid=c("a","b","c","a","b","c","a","b","c"),                   stopsequence=c(1,2,3,3,1,4,3,1,2)) 

i can top , bottom observations each group using slice, using 2 separate statments:

firststop <- df %>%   group_by(id) %>%   arrange(stopsequence) %>%   slice(1) %>%   ungroup  laststop <- df %>%   group_by(id) %>%   arrange(stopsequence) %>%   slice(n()) %>%   ungroup 

can combine these 2 statmenets 1 selects both top , bottom observations?

there faster way:

df %>%   group_by(id) %>%   arrange(stopsequence) %>%   filter(row_number()==1 | row_number()==n()) 

Comments