将所有其他级别重命名为“其他”

时间:2018-12-11 23:46:23

标签: r

我有一个数据框,其中包含我去年进行的所有通话。在“名称”列下,有我的联系人列表中的人员名称。在R中,此列包含30个因素,我只希望包含3个因素:妈妈爸爸 BestFriend 其他。 我正在使用以下代码段:

library(plyr) call$Name <- mapvalues(call$Name, from = 'Mikey Mouse', to = 'BFF') call$Name <- mapvalues(call$Name, from = c('Rocky Balboa','Uma Thurman'), to = c('Dad','Mom'))

如何将这3个级别以外的所有其他级别重命名为其他

2 个答案:

答案 0 :(得分:2)

我们首先可以创建level个“其他”(假设它是一个factor),为不是levels的{​​{1}}分配{{1}的向量}('nm1')改为'Other'

%in%

或者另一个选择是levels中的levels(call$Name) <- c(levels(call$Name), 'Other')) levels(call$Name)[!levels(call$Name %in% nm1] <- 'Other' ,它也具有recode选项,用于将向量中未包含的其他级别指定为给定值

dplyr

数据

.default

答案 1 :(得分:1)

fct_other()程序包中还包含forcats函数,用于执行此操作。使用提供的akrun数据,我们可以轻松做到:

library(forcats)

call$Name <- fct_other(call$Name, keep = nm1)