如何重命名 R 中列中的相同值?

问题描述 投票:0回答:1

说一个数据集:

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

为什么这不起作用?

r indexing rename gsub
1个回答
0
投票

你可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.