R - 如何删除单个列中特定短语之前和特定短语之后的行

R - How to delete rows before a certain phrase and after a certain phrase in a single column

您好,我想删除某个短语之前的行,然后删除稍后出现的相同(几乎)短语之后的行。我想另一种看待它的方法是只保留某个部分开头和结尾的数据。

我的数据如下:

df <- data.frame(time = as.factor(c(1,2,3,4,5,6,7,8,9,10,11,12,13)), 
                 type = c("","","GMT:yyyy-mm-dd_HH:MM:SS_LT:2016-10-18_06:09:53","(K)","","","","(K)","(K)","","(K)","GMT:yyyy-mm-dd_HH:MM:SS_CAM:2016-10-18_06:20:03",""),
                 names = c("J","J","J","J","J","J","J","J","J","J","J","J","J"))

我想删除第一个 GMT:yyyy... 短语之前和第二个 GMT:yyyy... 短语之后的所有内容。所以最终产品将是

time   type                                                    names
3      GMT:yyyy-mm-dd_HH:MM:SS_LT:2016-10-18_06:09:53           J
4      (K)                                                      J
5                                                               J
6                                                               J
7                                                               J 
8      (K)                                                      J
9      (K)                                                      J
10                                                              J
11     (K)                                                      J
12     GMT:yyyy-mm-dd_HH:MM:SS_LT:2016-10-18_06:20:03           J

我认为 subset 可能有用,但它给我带来了问题。

library(tidyverse)
library(stringr)

df2 <- df %>% slice(str_which(type, "GMT")[1]:str_which(type, "GMT")[2])

使用 grep,您可以找到找到您的模式的行的索引:

ind=grep("^GMT",df$type)

那么你可以只保留两个索引之间的行:

df=df[ind[1]:ind[2],]