保持组内的行直到R中满足条件

时间:2017-06-01 20:30:45

标签: r dplyr data-manipulation

我正在尝试过滤组中的数据,直到满足条件(在这种情况下直到状态为"已完成")并删除组中的其余行。我设法提出了这个排名解决方案,但在将代码应用到我的真实数据时,我遇到了一些问题。#34;。该函数有时不会保留最后一行(具有最大排名)。对此有更优雅的解决方案吗?

我使用的代码:

require(dplyr)

time <- seq(as.Date('2017/01/01'), as.Date('2017/01/15'), by="day")

set.seed(42); status <- sample(c("Completed", "On hold", "Active"), 15, replace = T)

ID <- c(rep(1, 5),rep(2, 5),rep(3, 5))


DF <- data.frame(Time = time,
                 Status = status,
                 ID = ID)

DF <- DF %>% group_by(ID) %>% mutate(ID_Rank = row_number())

DF$ID_Rank[DF$Status == "Completed"] <- max(DF$ID_Rank)+1

DF2 <- DF %>% group_by(ID) %>% filter(row_number() <= which.max(ID_Rank))

0 个答案:

没有答案