如何解决一旦在前一行R中达到了关注的观察/条件,如何删除所有后续行右检查
希望您可以解决我认为是dplyr / tidyr的问题:
问题 首次进行感兴趣的观察后,如何有条件地删除以下观察? (右删失)
数据
structure(list(record_id = c(120321,120321,120321),day_count = c(579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599
),day_count_stop = c(580,599,600
),te_yn = c(0,1,0)),row.names = c(NA,-21L),groups = structure(list(
record_id = 120321,.rows = structure(list(1:21),ptype = integer(0),class = c("vctrs_list_of","vctrs_vctr","list"))),-1L),class = c("tbl_df","tbl","data.frame"),.drop = TRUE),class = c("grouped_df","tbl_df","data.frame"))
EXPLANATION
因此,我实际上是从0天到732天关注了record_id120321。在此示例中,您看到了从579天到600天的后续工作。
我想在te_yn变为1之后删除所有行。这就是我们感兴趣的观察。因此在584天,te_yn变为1。我想删除585天,直到结束。
最良好的祝愿
这是生存分析中一个较大问题的一部分。如果您有使用Cox PH分析的经验并希望为您提供帮助,请查看以下链接: Coding help for Cox PH analysis with a categorical time-dependent variable
解决方法
所以,我想您必须针对不同的record_id这样做。在这里,我按此分组。看看这是否适合您。
> library(dplyr)
> df %>% group_by(record_id) %>% filter(if(1 %in% te_yn) row_number() == 1: (which(te_yn == 1) -1) else TRUE)
# A tibble: 15 x 4
# Groups: record_id [2]
record_id day_count day_count_stop te_yn
<dbl> <dbl> <dbl> <dbl>
1 120321 579 580 0
2 120321 580 581 0
3 120321 581 582 0
4 120321 582 583 0
5 120321 583 584 0
6 120322 579 580 0
7 120322 580 581 0
8 120322 581 582 0
9 120322 582 583 0
10 120322 583 584 0
11 120322 584 586 0
12 120322 585 587 0
13 120322 586 588 0
14 120322 587 589 0
15 120322 588 590 0
>
使用的数据:
structure(list(record_id = c(120321,120321,120322,120322),day_count = c(579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,579,588
),day_count_stop = c(580,600,590),te_yn = c(0,1,0)),row.names = c(NA,-31L),class = c("tbl_df","tbl","data.frame"))
已将其他组添加到原始数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。