gpt4 book ai didi

R:如何识别按ID分组的变量的特定值的第一次出现

转载 作者:行者123 更新时间:2023-12-04 00:01:07 24 4
gpt4 key购买 nike

我有一个日记形式的数据集 - 即我有多个相同 ID 的条目。除此之外,我还有一个分类变量(是/否)来指示事件是否发生。

ID <-  c(1,1,1,2,2,2,2,3,3,3,3,3,3)
event <- c("No", "No", "No", "Yes", "No", "No", "Yes", "Yes", "Yes", "No", "No", "Yes", "Yes")
df <- data.frame(ID, event)

ID event
1 No
1 No
1 No
2 Yes
2 No
2 No
2 Yes
3 Yes
3 Yes
3 No
3 No
3 Yes
3 Yes

我现在想删除这些条目,直到第一个“否”,所以每个 ID 都应该以“否”开头。但是,在第一个“否”之后仍然可以有一个"is"。所以我想要的输出是:

ID   event   
1 No
1 No
1 No
2 No
2 No
2 Yes
3 No
3 No
3 Yes
3 Yes

有人知道如何做到这一点吗?提前感谢您的宝贵时间!

最佳答案

我们可以使用 which.max 获取第一个 "No" 并选择从那里到最后一行的所有行。

library(dplyr)
df %>% group_by(ID) %>% slice(which.max(event == 'No') : n())
#Also
#df %>% group_by(ID) %>% slice(which(event == 'No')[1] : n())

# ID event
# <dbl> <chr>
# 1 1 No
# 2 1 No
# 3 1 No
# 4 2 No
# 5 2 No
# 6 2 Yes
# 7 3 No
# 8 3 No
# 9 3 Yes
#10 3 Yes

关于R:如何识别按ID分组的变量的特定值的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61477246/

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