r-在一个变量上创建一个带有startsWith()条件的ifelse()语句来更改另一个变量



我有一个数据集,我想在其中使用具有某种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(

最新更新