我想将第一行中与条件匹配的数据框中的所有行都删除到最后一行。
这是我在基础R中获得的,找到disp
为400的行,并将该行和该行中的所有行删除到最后一行:
mtcars[-c(which(mtcars$disp == 400):nrow(mtcars)), ]
如何使用dplyr和/或data.table执行此操作?
答案 0 :(得分:3)
在dplyr
中,您可以在cumsum
内使用filter
。一旦你达到前400,cumsum增加到1。
mtcars%>%
filter(cumsum(disp==400)<1)
以下是data.table
中的等效内容:
mtcars <- as.data.table(mtcars)
mtcars[cumsum(disp==400)<1]