我希望将等级"A"和"B"合并成"A+B"。我通过以下方式成功地完成了此操作:
I would like combine level "A","B" into "A+B". I successfully did this by the following:
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
函数。 - talatlevels(x)<-l
也是可以的。 - nicola