gpt4 book ai didi

r - 如果组具有特定值(查看前一个值),则保留组的行

转载 作者:行者123 更新时间:2023-12-02 18:50:30 26 4
gpt4 key购买 nike

对于每个学生id,我想检查他们在第一次失败后是否通过了测试。

library(dplyr)
data.frame(id = c(1,1,1,2,2,3,4,4), homework = c('fail', 'fail', 'pass', 'fail', 'pass', 'pass', 'pass', 'pass'),
date = c('20200122', '20200124', '20200126', '20210214', '20210216', '20210303', '20201203', '20201205')) %>%
mutate(date = as.Date(date, '%Y%m%d'))

# id homework date
# 1 1 fail 2020-01-22
# 2 1 fail 2020-01-24
# 3 1 pass 2020-01-26
# 4 2 fail 2021-02-14
# 5 2 pass 2021-02-16
# 6 3 pass 2021-03-03
# 7 4 pass 2020-12-03
# 8 4 pass 2020-12-05

如果是这样,我想保留该学生的行:

# id homework       date
# 1 1 fail 2020-01-22
# 2 1 fail 2020-01-24
# 3 1 pass 2020-01-26
# 4 2 fail 2021-02-14
# 5 2 pass 2021-02-16

我似乎无法找到如何“到达”组内上方/下方的行以进行检查。有人有什么建议吗?预先感谢:)

最佳答案

您可以使用 dplyr::lagdplyr::lead 分别访问当前行之前和之后的行。

df %>%
group_by(id) %>%
mutate(
passed_after_fail = homework == "pass" & lag(homework) == "fail"
) %>%
filter(any(passed_after_fail))

关于r - 如果组具有特定值(查看前一个值),则保留组的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66861028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com