如何按组删除在R中指定字符项之前出现的数据帧行?
例如,假设您正在尝试有效地删除每个idnumber组中出现在单词“Go”之前的所有行,如下所示,而不使用For循环如何按组删除在R中指定字符项之前出现的数据帧行?,r,R,例如,假设您正在尝试有效地删除每个idnumber组中出现在单词“Go”之前的所有行,如下所示,而不使用For循环 idnumber<-c(1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5) status<-c("Get", "Ready", "Go", "Get", "Ready", "Get", "Ready", "Go", "Drive", "Get", "Ready", "Get", "Ready", "Go", "Drive",
idnumber<-c(1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5)
status<-c("Get", "Ready", "Go", "Get", "Ready", "Get", "Ready", "Go", "Drive", "Get", "Ready", "Get", "Ready", "Go", "Drive", "Turn")
df<-data.frame(idnumber, status)
idnumber status
1 Get
1 Ready
1 Go
2 Get
2 Ready
3 Get
3 Ready
3 Go
3 Drive
4 Get
4 Ready
5 Get
5 Ready
5 Go
5 Drive
5 Turn
我们可以编写一个函数来选择行。如果组中存在“Go”,我们将从该行选择行,直到组结束,如果不存在,我们将不选择任何行
custom_fun <- function(n) {
inds <- n == "Go"
if(any(inds)) which.max(inds):length(n) else 0
}
自定义乐趣%slice(自定义乐趣(状态))
#身份证号码状态
#
#11去
#2.3开始
#3 3路
#4.5开始
#5路5号
#6.5圈
custom_fun <- function(n) {
inds <- n == "Go"
if(any(inds)) which.max(inds):length(n) else 0
}
library(dplyr)
df %>% group_by(idnumber) %>% slice(custom_fun(status))
# idnumber status
# <dbl> <fct>
#1 1 Go
#2 3 Go
#3 3 Drive
#4 5 Go
#5 5 Drive
#6 5 Turn