Получить большинство из 3 столбцов одной строки и добавить результаты в виде новой строки - PullRequest
2 голосов
/ 09 октября 2019

Я пытаюсь получить результаты из 3 столбцов и добавляю результат в столбец результатов в той же строке
Мои данные

╔════════════════════════════════════════════════╗
║ No    CART    RF    XG     Result              ║
╠════════════════════════════════════════════════╣
║ 1      Yes    No    No        No               ║
║ 2      Yes    Yes   No        Yes              ║
╚════════════════════════════════════════════════╝

Как получить столбец результатов, глядя на CART, RF и XG?

Ответы [ 2 ]

2 голосов
/ 09 октября 2019

Отказ от ответственности (Самореклама) : Использование manymodelr (Для более новой версии используйте разработчика версия ), мы можем получить режим по очереди:

 df$Res<-apply(df[,-4],1,manymodelr::get_mode)
 df
  No CART  RF XG Result Res
1  1  Yes  No No     No  No
2  2  Yes Yes No    Yes Yes

Данные:

df <-structure(list(No = 1:2, CART = structure(c(1L, 1L), .Label = "Yes", class = "factor"), 
    RF = structure(1:2, .Label = c("No", "Yes"), class = "factor"), 
    XG = structure(c(1L, 1L), .Label = "No", class = "factor"), 
    Result = structure(1:2, .Label = c("No", "Yes"), class = "factor")), class = "data.frame", row.names = c(NA, 
-2L))
1 голос
/ 09 октября 2019

Если взять функцию режима из здесь ,

Mode <- function(x) {
   ux <- unique(x)
   ux[which.max(tabulate(match(x, ux)))]
}

, мы можем применить ее построчно, используя apply

df$Result <- apply(df[-1], 1, Mode)
df

#  No CART  RF XG Result
#1  1  Yes  No No     No
#2  2  Yes Yes No    Yes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...