删除数据框中从第一个匹配到最后一行的所有行

时间:2017-06-26 23:12:46

标签: r dataframe data.table dplyr

我想将第一行中与条件匹配的数据框中的所有行都删除到最后一行。

这是我在基础R中获得的,找到disp为400的行,并将该行和该行中的所有行删除到最后一行:

mtcars[-c(which(mtcars$disp == 400):nrow(mtcars)), ]

如何使用dplyr和/或data.table执行此操作?

1 个答案:

答案 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]