根据其他列 R 的因素重命名级别

Renaming levels based on factors of other column R

我有一个大型数据框,其中名称 (col1) 应嵌套在位置名称 (col2) 中。在下面的示例中,来自 col1 的“d”应该在 col2 的“z”内,但在第八个元素中被列为“y”。我不能只重命名 col2 中的“y”,因为它在大多数地方都是正确的。只有当 col1 == "d" 时,我才需要将 "y" 重命名为 "z"。这是一个包含多个示例的大型数据框,因此也不可能仅重命名元素

col1<-c("a","b","c","d","a","b","c","d")
col2<-c("x","y","z","z","x","y","z","y")
df<-data.frame(col1,col2)

如果您可以使用 col1col2 的正确组合创建数据框 lookup,这将很容易。然后,您可以 left_join 使用 lookup.

的原始数据框
library(dplyr)

# Create a lookup table. In reality you probably need to create this with other methods.
lookup <- df %>%
  distinct() %>%
  filter(!(col1 %in% "d" & col2 %in% "y"))

# join col1 to the lookup
df2 <- df %>%
  select(-col2) %>%
  left_join(lookup, by = "col1")
df2
#   col1 col2
# 1    a    x
# 2    b    y
# 3    c    z
# 4    d    z
# 5    a    x
# 6    b    y
# 7    c    z
# 8    d    z