Использование индекса для замены нескольких уровней фактора - PullRequest
0 голосов
/ 27 ноября 2018

Я заинтересован в том, чтобы найти наиболее эффективный способ замены нескольких уровней фактора в фрейме данных с использованием индекса ..... ниже приведен пример фрейма данных, который я назвал "ph2", индекс "индекс ", и мой подход, который не так эффективен, особенно когда у нас есть большое количество замен.

index <- data.frame(
   AA = LETTERS[seq( from = 1, to = 5 )],
   BB = c("x1","x2","x3","x4","x5")
    )


ph2 <- data.frame(
    name = LETTERS[seq( from = 1, to = 5 )],
    RE = seq(1:5))


levels(ph2$name)[levels(ph2$name)=="A"] <- "X1"
levels(ph2$name)[levels(ph2$name)=="B"] <- "X2"
levels(ph2$name)[levels(ph2$name)=="C"] <- "X3"
levels(ph2$name)[levels(ph2$name)=="D"] <- "X4"
levels(ph2$name)[levels(ph2$name)=="E"] <- "X5"

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете сделать:

levels(ph2$name) <- paste0("X",ph2$RE[match(levels(ph2$name),ph2$name)])
levels(ph2$name)
#[1] "X1" "X2" "X3" "X4" "X5"

Или, если они уже хорошо отсортированы, как здесь:

levels(ph2$name) <- paste0("X",ph2$RE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...