Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 筛选以在特定列中的特定值第一次出现之前删除所有行_R - Fatal编程技术网

R 筛选以在特定列中的特定值第一次出现之前删除所有行

R 筛选以在特定列中的特定值第一次出现之前删除所有行,r,R,我希望在特定列中的特定值第一次出现之前筛选以删除所有行。例如,在下面的数据框中,我想删除第一次在列a中出现bob之前的所有行。请注意,bob的值第二次重复-我只想在第一次出现bob之前删除行 (dat<-data.frame(a= c("pete", "mike", "bob", "bart", "bob"), b=c(1,2,3,4,5), c=c("home", "away", "home", "away", "gone"))) a b c 1 pete 1 home

我希望在特定列中的特定值第一次出现之前筛选以删除所有行。例如,在下面的数据框中,我想删除第一次在列
a
中出现
bob
之前的所有行。请注意,
bob
的值第二次重复-我只想在第一次出现
bob
之前删除行

(dat<-data.frame(a= c("pete", "mike", "bob", "bart", "bob"), b=c(1,2,3,4,5), c=c("home", "away", "home", "away", "gone")))
     a b    c
1 pete 1 home
2 mike 2 away
3  bob 3 home
4 bart 4 away
5  bob 5 gone

cumsum
通常是此类任务的理想人选

dat[cumsum(dat$a == "bob") >= 1, ]
#     a b    c
#3  bob 3 home
#4 bart 4 away
#5  bob 5 gone

dplyr
使用
slice
的方式

library(dplyr)
dat %>% slice(which.max(a == "bob") : n())

#     a b    c
#1  bob 3 home
#2 bart 4 away
#3  bob 5 gone

以R为底的是哪个

dat[which.max(dat$a == "bob") : nrow(dat), ]

我们可以使用
cummax

library(dplyr)
dat %>%
     filter(cummax(a == "bob") > 0)
#     a b    c
#1  bob 3 home
#2 bart 4 away
#3  bob 5 gone
dat[匹配(TRUE,dat$=“bob”)[1]:nrow(dat),]
library(dplyr)
dat %>%
     filter(cummax(a == "bob") > 0)
#     a b    c
#1  bob 3 home
#2 bart 4 away
#3  bob 5 gone