如何解决使用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])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。