首页 > 解决方案 > 重命名“混乱”的数据框级别名称

问题描述

我有一个“乱七八糟”的数据框,里面到处都是因子级别的名称

DF <- data.frame(V1 = factor(c("A.", "zB,", "Cs", "At", "Dp", "Df")),
                   V2=factor(c("Af", "A_", "A_", ".A", "D.", "rB")))

我想重命名我的级别,以便我只有 A、B、C 和 D 级别。

我可以使用以下方法为每个单独的级别执行此操作:

as.data.frame(lapply(DF, function(x) { revalue(x, c("A."="A")) }))

但这对于大型数据框来说非常耗时。

有没有办法自动执行此操作,以便将包含字母“A”的每个级别重命名为 A(无论是称为 A. 还是 Af)等?

标签: rdataframe

解决方案


对于此示例,您可以使用from快速完成stringr::str_extract 并在每列中应用mutate_alldplyr

library(dplyr)
DF %>% mutate_all(stringr::str_extract, "[A-D]")
  V1 V2
1  A  A
2  B  A
3  C  A
4  A  A
5  D  D
6  D  B

推荐阅读