【发布时间】:2016-04-12 09:15:17
【问题描述】:
我想将级别“A”、“B”合并为“A+B”。我通过以下方式成功做到了这一点:
x <- factor(c("A","B","A","C","D","E","A","E","C"))
x
#[1] A B A C D E A E C
#Levels: A B C D E
l <- c("A+B","A+B","C","D+E","D+E")
factor(l[as.numeric(x)])
#[1] A+B A+B A+B C D+E D+E A+B D+E C
#Levels: A+B C D+E
有没有更简单的方法来做到这一点? (即更易于解释的函数名称,例如 combine.factor(f, old.levels, new.levels) 将有助于更容易理解代码。)
另外,我试图找到一个命名良好的函数,它可能与 dplyr 包中的数据框一起使用,但没有运气。最接近的实现是
df %>% mutate(x = factor(l[as.numeric(x)]))
【问题讨论】:
-
您不需要
as.numeric,即factor(l[x])也可以。并且您可以轻松编写自己的combine.factor函数 -
levels(x)<-l也有效。