Переименуйте все остальные уровни в «Другой» - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть датафрейм, содержащий все звонки, которые я сделал за последний год.Под столбцом «Имя» есть имена людей в моем списке контактов.В 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 голосов
/ 12 декабря 2018

В пакете forcats также есть функция fct_other() для выполнения именно этого.Используя данные, предоставленные akrun, мы можем просто сделать:

library(forcats)

call$Name <- fct_other(call$Name, keep = nm1)
0 голосов
/ 12 декабря 2018

Сначала мы можем создать level 'Другие' (при условии, что это factor), присвоить levels, который не является %in% вектором levels ('nm1'), значение 'Другое'

levels(call$Name) <- c(levels(call$Name), 'Other'))
levels(call$Name)[!levels(call$Name %in% nm1] <- 'Other'

Или другой параметр recode из dplyr, который также имеет параметр .default для указания других уровней, которые не находятся в векторе для данного значения

library(dplyr)
recode(call$Name, `Mikey Mouse` =  'BFF', `Rocky Balboa` = 'Dad',
    `Uma Thurman` = 'Mom', .default = 'Other')

данные

set.seed(24)
call <- data.frame(Name = sample(c('Mikey Mouse', 'Rocky Balboa',
  'Uma Thurman', 'Richard Gere', 'Rick Perry'), 25, replace = TRUE))
nm1 <- c('Mickey Mouse', 'Rocky Balboa', 'Uma Thurman')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...