使用R将分组数据中特定行值之前的行子集

问题描述

考虑以下数据框

df<-data.frame(group=c(1,1,2,3,3),status=c(NA,NA,NA),health=c(0,0))

对于每个组(即第一列),我正在寻找一种方法来对第二行中首先看到1的单元格之前的行进行子集化(标记状态)。预期的输出是

  group status health
1     1     NA      0
2     2     NA      0
3     3     NA      1

我尝试使用“过滤器”和“切片”功能解决此问题,但是未成功设置子行。任何帮助将不胜感激。

解决方法

一个解决方案是tidyverse

df %>% 
  group_by(group) %>% 
  mutate(gr=which(status==1)[1]-1) %>% 
  slice(unique(gr)) %>% 
  select(-gr)
# A tibble: 3 x 3
# Groups:   group [3]
  group status health
  <dbl>  <dbl>  <dbl>
1     1     NA      0
2     2     NA      0
3     3     NA      1

df %>% 
  group_by(group) %>% 
  filter(row_number() == which(status==1)[1]-1)

df %>% 
  group_by(group) %>% 
  slice(which(lead(status==1))[1])

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...