r - 如何在 R 中创建多个新的逻辑列(基于数值变量的截止序列)?

标签 r dplyr

我正在分析生存数据,我希望获取一列生存持续时间并根据 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/

相关文章:

r - 在多列上提取第一个非 NA 值

R:如何在列表中应用求和函数?

r - 如何更改卡方检验中的自由度

r - 如何将自定义函数应用于数据框的每一列

使用 `starts_with()` 重命名列,其中新前缀是一个字符串

r - dplyr summarise() 函数的输出

r - ggplot2:更改条形图上堆栈的顺序

r - 在一系列日期中识别第三个星期五

r - 使用 R 拆分 data.frame 对象中的主题标签

r - 如何创建从 R 中的另一列获取日期的列?