Select 数据直到最后基于一列中的模式

Select data till the end based on a pattern in one column

我的数据很乱。我想根据列中的一个短语对数据进行子集化,直到最后。

df1 <- data.frame(
V1=c("No. de Control Interno de", "la Partida / Concepto de Obra","",
     "LO-009J0U004-","E50-2021",""),
V2=c("","Descripción Breve","Trabajos de señalamiento horizontal en puente de",
     "cuota \"El Zacatal\", consistentes en suministro y","aplicación de pintura de tránsito, suministro y",
     "colocación de botones y ménsulas reflejantes."),
V3=c("","ClaveCUCOP","","","62502002",""),
V4=c("Unidad","Observaciones de Medida","","","Obra",""),
V5=c("","Cantidad","","","1","")
)

每当 V2 中有短语 Descripción 时,代码应该从该行到末尾对数据帧进行子集化。例如,在上面的例子中,这意味着从第 2 行到第 6 行选择数据。我尝试使用 stringr 包中的 str_detect

您可以使用 which() 函数来 return str_detect()TRUE 的索引。

library(stringr)

which(str_detect(df1$V2, "Descripción"))
[1] 2

如果您将 which() 的输出保存到一个变量,则可以使用它来对数据进行子集化。请注意,以下内容明确调用 x 中的第一个值,以防有多个地方 str_detect return 为真。

x <- which(str_detect(df1$V2, "Descripción"))
df1[x[1]:nrow(df1),]
                             V1                                               V2         V3                      V4       V5
2 la Partida / Concepto de Obra                                Descripción Breve ClaveCUCOP Observaciones de Medida Cantidad
3                               Trabajos de señalamiento horizontal en puente de                                            
4                 LO-009J0U004- cuota "El Zacatal", consistentes en suministro y                                            
5                      E50-2021  aplicación de pintura de tránsito, suministro y   62502002                    Obra        1
6                                  colocación de botones y ménsulas reflejantes.