簡體   English   中英

如何從R中的多個列中選擇投票最多的類別

[英]How to choose the most voted category from multiple columns in R

我有一個需要使用 R 解決的分類問題,但老實說,我不知道該怎么做。

我有一張表(見下文),其中不同的樣本按三個 ML 模型(每列一個)分類,我需要為每個案例選擇“投票最多”的類別並將其寫入新列。

當前表

在此處輸入圖像描述

期望的輸出

在此處輸入圖像描述

我一直在閱讀 R 中的分類變量,但似乎任何東西都適合我的特定需求。

任何幫助將不勝感激。

提前致謝。

傑倫

這不是你提問的方式。 請參閱相關線程,並在將來以如下所示的形式提供數據(使用dput()並從控制台復制並粘貼結果)。 無論如何,這里是一個基本的 R 解決方案:

# Calculate the modal values: mode => character vector
df1$mode <- apply(
  df1[,colnames(df1) != "samples"],
  1,
  function(x){
    head(
      names(
        sort(
          table(x), 
          decreasing = TRUE
        )
      ),
     1
    )
  }
)

數據:

df1 <- structure(list(samples = c("S1", "D4", "S2", "D1", "D2", "S3", 
"D3", "S4"), RFpred = c("Carrier", "Absent", "Helper", "Helper", 
"Carrier", "Absent", "Resistant", "Carrier"), SVMpred = c("Absent", 
"Absent", "Helper", "Helper", "Carrier", "Helper", "Helper", 
"Resistant"), KNNpred = c("Carrier", "Absent", "Carrier", "Helper", 
"Carrier", "Absent", "Helper", "Resistant"), mode = c("Carrier", 
"Absent", "Helper", "Helper", "Carrier", "Absent", "Helper", 
"Resistant")), row.names = c(NA, -8L), class = "data.frame")

Tidyverse 方法:

library(dplyr)
library(tibble)

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

df %>%
    as_tibble() %>%
    rowwise() %>%
    mutate(
        Vote = mode_char(c_across(RFpred:KNNpred))
    )

#> # A tibble: 8 × 5
#> # Rowwise: 
#>   samples RFpred    SVMpred   KNNpred   Vote     
#>   <chr>   <chr>     <chr>     <chr>     <chr>    
#> 1 S1      Carrier   Absent    Carrier   Carrier  
#> 2 D4      Absent    Absent    Absent    Absent   
#> 3 S2      Helper    Helper    Carrier   Helper   
#> 4 D1      Helper    Helper    Helper    Helper   
#> 5 D2      Carrier   Carrier   Carrier   Carrier  
#> 6 S3      Absent    Helper    Absent    Absent   
#> 7 D3      Resistant Helper    Helper    Helper   
#> 8 S4      Carrier   Resistant Resistant Resistant

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM