我正在分析生存数据,我希望能获得一列生存时间,并根据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)但我想一定有更好的办法!
发布于 2022-07-08 00:50:35
使用base R
for(i in 1:24){
`[[`(test , paste0("survival" , i)) <-
sapply(test$survival ,\(x) x > i )
}# A tibble: 10 × 25
survival survival1 survival2 survival3 survival4 survival5
<int> <lgl> <lgl> <lgl> <lgl> <lgl>
1 18 TRUE TRUE TRUE TRUE TRUE
2 32 TRUE TRUE TRUE TRUE TRUE
3 2 TRUE FALSE FALSE FALSE FALSE
4 34 TRUE TRUE TRUE TRUE TRUE
5 38 TRUE TRUE TRUE TRUE TRUE
6 19 TRUE TRUE TRUE TRUE TRUE
7 20 TRUE TRUE TRUE TRUE TRUE
8 12 TRUE TRUE TRUE TRUE TRUE
9 23 TRUE TRUE TRUE TRUE TRUE
10 7 TRUE TRUE TRUE TRUE TRUE
# … with 19 more variables: survival6 <lgl>, 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>https://stackoverflow.com/questions/72905254
复制相似问题