![](/img/trans.png)
[英]R Find string matches multiple columns, and choose most right column match
[英]How to choose the most voted category from multiple columns in 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.