我有一个数据集,我想在其中使用具有某种startsWith()
条件的ifelse()
语句来更改另一个变量。
在通俗的英语中,它本质上是";如果ID以13开始,则variable_X==1";
我知道grepl
有这样的搜索能力,但我不确定如何将结果输出到新的或现有的变量上。
有什么想法可以从这个开始吗?非常感谢。
编辑:抱歉,因为我忘了提到一个关键的细节。有多个ID,范围从13、14、15、16等;如果ID以13开始,则变量X==1";但另一个是";什么都不做";以便不与过ID号码重叠。我还附上了一个示例数据集,显示了我目前拥有的内容。
ID <- c('13-432', '13-342', '13-546', '14-442', '14-543',
'15-332', '15-153', '16-323', '16-654', '16-554')
Outcome <- c(1, 1, 1, 2, 2, 3, 2, 3, 2, 2)
df <- data.frame(ID, Outcome)
ID Outcome
1 13-432 1
2 13-342 1
3 13-546 1
4 14-442 2
5 14-543 2
6 15-332 3
7 15-153 2
8 16-323 3
9 16-654 2
10 16-554 2
dplyr
实现这一点的方法可以是
library(dplyr)
dat <- data.frame(ID = c("131", "140"))
dat |> mutate(variable_X = if_else(startsWith(ID, "13"), 1, 0))
输出
#> ID variable_X
#> 1 131 1
#> 2 140 0
创建于2022-04-11由reprex包(v2.0.1(