R 给定事件后第一次观察的子集行
我正在努力实现以下目标:R 给定事件后第一次观察的子集行,r,dplyr,R,Dplyr,我正在努力实现以下目标: 按id分组数据 删除发生“3”后的所有行 查找“3”之前最近的“1”、“2”或NA,并仅保留该行 我的数据: data <- data.frame( id=c(1,1,1,1,1, 2,2,2,2, 3,3,3), a=c(NA,1,2,3,3, NA,3,2,3, 1,5,3)) 但这似乎很离谱 谢谢。这将问题分解为不同的步骤 data %>% group_by(id) %>% filter(row_number()<first
data <- data.frame(
id=c(1,1,1,1,1, 2,2,2,2, 3,3,3),
a=c(NA,1,2,3,3, NA,3,2,3, 1,5,3))
但这似乎很离谱
谢谢。这将问题分解为不同的步骤
data %>%
group_by(id) %>%
filter(row_number()<first(which(a==3))) %>% # drop things past a 3
filter(a %in% c(1,2,NA)) %>% # only keep 1,2 or NA
filter(row_number()==n()) # choose the last row in each group
数据%>%
分组依据(id)%>%
筛选(行数()%#将内容放在3之后
过滤器(在%c(1,2,NA)中的百分比)%>%#仅保留1,2或NA
筛选(行数()==n())#选择每组中的最后一行
data %>% group_by(id) %>% slice(if(first(a) == 3))
data %>%
group_by(id) %>%
filter(row_number()<first(which(a==3))) %>% # drop things past a 3
filter(a %in% c(1,2,NA)) %>% # only keep 1,2 or NA
filter(row_number()==n()) # choose the last row in each group