说一个数据集:
a <- c(101,101,102,102,103,103)
b <- c("M","M","P","P","M","M")
dt <- as.data.frame(cbind(a,b))
dt
a b
1 101 M
2 101 M
3 102 P
4 102 P
5 103 M
6 103 M
a 列是subject_ID,b 列是subject_name。我想唯一地将主题 ID 101 重命名为 M1,将 103 重命名为 M2。
有没有办法通过索引来做到这一点?
这行不通。
dt.try1 <- gsub("M","M1",dt[1:2,c(2)])
dt.try1
[1] "M1" "M1"
这就是理想的结果:
a b
1 101 M
2 101 M
3 102 P
4 102 P
5 103 M2
6 103 M2
为什么这不起作用?
你可以使用
dplyr
library(dplyr)
dt %>%
mutate(b = case_when(a == "101" ~ "M1",
a == "103" ~ "M3",
TRUE ~ b))
返回
a b
1 101 M1
2 101 M1
3 102 P
4 102 P
5 103 M3
6 103 M3