根据其他列 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)
如果您可以使用 col1
和 col2
的正确组合创建数据框 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
我有一个大型数据框,其中名称 (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)
如果您可以使用 col1
和 col2
的正确组合创建数据框 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