我有一个数据框,其中包含我去年进行的所有通话。在“名称”列下,有我的联系人列表中的人员名称。在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个级别以外的所有其他级别重命名为其他?
答案 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)