From 725a325b1357d5b6747653d7e883771403724f2a Mon Sep 17 00:00:00 2001 From: Dan Chaltiel <15105152+DanChaltiel@users.noreply.github.com> Date: Sat, 24 Aug 2024 14:30:43 +0200 Subject: [PATCH] survival POC --- tests/testthat/_snaps/quick_surv.md | 24 +++++++++++++++++ tests/testthat/test-quick_surv.R | 41 +++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 tests/testthat/_snaps/quick_surv.md create mode 100644 tests/testthat/test-quick_surv.R diff --git a/tests/testthat/_snaps/quick_surv.md b/tests/testthat/_snaps/quick_surv.md new file mode 100644 index 00000000..c99a21c3 --- /dev/null +++ b/tests/testthat/_snaps/quick_surv.md @@ -0,0 +1,24 @@ +# survival POC + + Code + df = data.frame(time = c(71.1, 75.7, 78.7, 79, 95.1, 108, 120.1, 120.3, 121, + 140.8, 145, 146.7, 160, 160, 167.6, 167.6, 225, 258, 275.8, 275.8, 275.8, 301, + 304, 318, 350, 351, 360, 360, 400, 440, 460, 472), event = rep(rep(c(1, 0), 6), + c(6L, 1L, 2L, 1L, 1L, 1L, 2L, 7L, 1L, 3L, 1L, 6L)), group = rep(c("B", "A", "B", + "A", "B", "A", "B", "A", "B", "A", "B"), c(9L, 1L, 1L, 1L, 2L, 3L, 1L, 1L, 7L, + 2L, 4L))) + df$surv = survival::Surv(df$time, df$event) + fit = survival::survfit(surv ~ group, data = df) + times = sort(fit$time) + a = summary(fit, times = times, extend = TRUE, data.frame = TRUE) + a %>% dplyr::filter(strata == "group=B") %>% dplyr::filter(time > 120 & time < + 150) %>% dplyr::select(strata, time, n.risk, n.event, surv) + Output + strata time n.risk n.event surv + 1 group=B 120.1 18 0 0.7500000 + 2 group=B 120.3 17 1 0.7058824 + 3 group=B 121.0 16 1 0.6617647 + 4 group=B 140.8 15 1 0.6617647 + 5 group=B 145.0 15 1 0.6176471 + 6 group=B 146.7 14 1 0.6176471 + diff --git a/tests/testthat/test-quick_surv.R b/tests/testthat/test-quick_surv.R new file mode 100644 index 00000000..b9e4530f --- /dev/null +++ b/tests/testthat/test-quick_surv.R @@ -0,0 +1,41 @@ +test_that("survival POC", { + + # mtcars3 %>% + # transmute(time=as.numeric(disp), event=as.numeric(factor(am))-1, + # group=ifelse(is.na(dummy2), "A", "B")) %>% + # arrange(time) %>% as.data.frame() %>% + # # filter(time<150) %>% + # constructive::construct() + + expect_snapshot({ + + df = data.frame( + time = c(71.1, 75.7, 78.7, 79, 95.1, 108, 120.1, 120.3, 121, 140.8, 145, 146.7, 160, + 160, 167.6, 167.6, 225, 258, 275.8, 275.8, 275.8, 301, 304, 318, 350, 351, + 360, 360, 400, 440, 460, 472), + event = rep(rep(c(1, 0), 6), c(6L, 1L, 2L, 1L, 1L, 1L, 2L, 7L, 1L, 3L, 1L, 6L)), + group = rep(c("B", "A", "B", "A", "B", "A", "B", "A", "B", "A", "B"), + c(9L, 1L, 1L, 1L, 2L, 3L, 1L, 1L, 7L, 2L, 4L)) + ) + + df$surv = survival::Surv(df$time, df$event) + fit = survival::survfit(surv~group, data=df) + times = sort(fit$time) + + a = summary(fit, times=times, extend=TRUE, data.frame=TRUE) + a %>% + dplyr::filter(strata=="group=B") %>% + dplyr::filter(time>120 & time<150) %>% + dplyr::select(strata, time, n.risk, n.event, surv) + + }) + + + #t=140.8 + #on local 4.3 : 1/15 + #on local 4.4 : 1/15 + #on ubuntu-devel : 1/15 + #on 4.4.1 : 0/15 + #on release : 0/15 + +})