Ситуацияг - выбрать последние п вхождений для каждой группы
У меня есть кадр данных df
:
df <- structure(list(person = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L,
3L, 3L), .Label = c("pA", "pB", "pC"), class = "factor"), date = structure(c(16071,
16102, 16130, 16161, 16071, 16102, 16130, 16071, 16102), class = "Date")), .Names = c("person",
"date"), row.names = c(NA, -9L), class = "data.frame")
> df
person date
1 pA 2014-01-01
2 pA 2014-02-01
3 pA 2014-03-01
4 pA 2014-04-01
5 pB 2014-01-01
6 pB 2014-02-01
7 pB 2014-03-01
8 pC 2014-01-01
9 pC 2014-02-01
Вопрос
Как я могу выбрать последний 2 (или ' n '), упорядоченные по дате, для каждого человека, так что у меня есть результирующий фрейм данных df1
:
> df1
person date
1 pA 2014-03-01
2 pA 2014-04-01
3 pB 2014-02-01
4 pB 2014-03-01
5 pC 2014-01-01
6 pC 2014-02-01
?
Я попытался комбинации
library(dplyr)
df1 <- df %>%
group_by(person) %>%
select(tail(df, 2))
не радость.
узнать что-то новое каждый день; 'do()' - спасибо. – tospig
@tospig 'do' полезен, но я думаю, что' slice' будет быстрее. – akrun
Я получаю сообщение 'не удалось найти функцию slice' – tospig