我正在分析生存数据,我希望获取一列生存持续时间并根据 1:24 的阈值计算逻辑向量 - 并将其放在数据框中。
例如,采用以下示例数据:
set.seed(1988)
test <- tibble(
survival = c(sample(1:40,10, replace =T))
)
我想快速创建标题为“survival1”、“survival2”等的新列 - 直到“survival24” - 其逻辑值基于是否生存 > 阈值。
由于我最熟悉 dplyr,因此到目前为止我一直在手动进行变异,例如
test %>% mutate(survival1 = survival > 1, survival2 = survival > 2)
但我想一定有更好的方法!
最佳答案
我无法弄清楚如何一步创建和命名列,但据我所知:
library(tidyverse)
set.seed(1988)
test <- tibble(
survival = c(sample(1:40,10, replace =T))
)
test %>%
mutate(suppressMessages(map_dfc(1:24, ~ test$survival > .x))) %>%
rename_with(~ paste0("survival", 1:24), starts_with("..."))
#> # A tibble: 10 × 25
#> survival survival1 survival2 survival3 survival4 survival5 survival6
#> <int> <lgl> <lgl> <lgl> <lgl> <lgl> <lgl>
#> 1 18 TRUE TRUE TRUE TRUE TRUE TRUE
#> 2 32 TRUE TRUE TRUE TRUE TRUE TRUE
#> 3 2 TRUE FALSE FALSE FALSE FALSE FALSE
#> 4 34 TRUE TRUE TRUE TRUE TRUE TRUE
#> 5 38 TRUE TRUE TRUE TRUE TRUE TRUE
#> 6 19 TRUE TRUE TRUE TRUE TRUE TRUE
#> 7 20 TRUE TRUE TRUE TRUE TRUE TRUE
#> 8 12 TRUE TRUE TRUE TRUE TRUE TRUE
#> 9 23 TRUE TRUE TRUE TRUE TRUE TRUE
#> 10 7 TRUE TRUE TRUE TRUE TRUE TRUE
#> # … with 18 more variables: survival7 <lgl>, survival8 <lgl>, survival9 <lgl>,
#> # survival10 <lgl>, survival11 <lgl>, survival12 <lgl>, survival13 <lgl>,
#> # survival14 <lgl>, survival15 <lgl>, survival16 <lgl>, survival17 <lgl>,
#> # survival18 <lgl>, survival19 <lgl>, survival20 <lgl>, survival21 <lgl>,
#> # survival22 <lgl>, survival23 <lgl>, survival24 <lgl>
由reprex package于2022年7月8日创建(v2.0.1)
关于r - 如何在 R 中创建多个新的逻辑列(基于数值变量的截止序列)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72905254/