Мой вопрос вытекает из How to find tail rows of a data frame that satisfy set criteria? и как таковой, мой (обновлено) Выборочные данные структурированы:Как удалить N строк кадра данных, в соответствии с условиями
Individ <- data.frame(Participant = c("Bill", "Bill", "Bill", "Bill", "Bill", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Bill", "Bill", "Bill", "Bill"),
Time = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4),
Condition = c("Placebo", "Placebo", "Placebo", "Placebo", "Placebo", "Expr", "Expr", "Expr", "Expr", "Expr", "Expr", "Placebo", "Placebo", "Placebo", "Placebo", "Placebo", "Placebo", "Expr", "Expr", "Expr", "Expr"),
Location = c("Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Away", "Away", "Away", "Away"),
Power = c(400, 250, 180, 500, 300, 600, 512, 300, 500, 450, 200, 402, 210, 130, 520, 310, 451, 608, 582, 390, 570))
Я научился находить хвост строка для каждого Participant
по разным Condition
плюс Location
на основе их последнего вхождения Power
. Теперь я хочу удалить последние 3 строки из каждого Participant
для каждого Condition
и Location
. Тем не менее, Time
, собранный для каждого Participant
и Condition
, отличается и, следовательно, я не могу удалять строки исключительно на основе стандартного Time
.
Как быстро прокрутить каждый Participant
и их соответствующие Condition
плюс Location
и удалить последние 3 строки? Мой фактический фрейм данных составляет 4 миллиона строк + с более чем 50 участниками, поэтому в идеале желательно, чтобы решение, которое выполняет итерации по каждому из Participant
и Condition
.
Мой ожидаемый результат будет:
Output <- data.frame(Participant = c("Bill", "Bill", "Jane", "Jane", "Jane", "Jane", "Jane", "Jane", "Bill"),
Time = c(1, 2, 1, 2, 3, 1, 2, 3, 1),
Condition = c("Placebo", "Placebo", "Expr", "Expr", "Expr", "Placebo", "Placebo", "Placebo", "Expr"),
Location = c("Home", "Home", "Home", "Home", "Home", "Home", "Home", "Home", "Away"),
Power = c(400, 250, 600, 512, 300, 402, 210, 130, 608))
Кто знал, что это будет так легко ?! Благодарим вас за решение 'dplyr'. – user2716568