对R中数据帧中两个特定字符值之间的所有行进行索引



我创建了一个数据帧z。

a = c(1,1,1)
b = c("start",2,2)
c = c(3,3,3)
d = c("end",4,4)
z = data.frame(rbind(a,b,c,d))
z

我如何索引以获得"0"one_answers"0"之间的行号;"开始";以及";结束";如果我不知道在";"开始";以及";结束";?在这种情况下;"开始";以及";结束";但是对于下一个数据集;"开始";以及";结束";。有没有一种方法可以使用";"开始";以及";结束";提取它们之间的所有行?

如果您想要介于开始和结束之间的行,但不包括那些实际的行,您可以执行

seq(which(z$X1 == 'start') + 1, which(z$X1 == 'end') - 1)
#> [1] 3

或者,获取行本身的

z[seq(which(z$X1 == 'start') + 1, which(z$X1 == 'end') - 1),]
#>   X1 X2 X3
#> c  3  3  3
  • 我们可以使用
library(dplyr)
z |> slice((which(X1 == "start")+1 ): (which(X1 == "end")-1))
  • 或者我们可以使用grepl
z |> slice((which(grepl("start" , X1))+1):
(which(grepl("end" , X1))-1))

最新更新