You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中为出现次数最多的值分配新值的实现方法

解决方法

可以使用dplyr包的across函数批量处理除name外的列,结合自定义逻辑提取每列的众数后完成值的替换:

  1. 先定义提取列众数的函数(自动忽略NA,若列全为NA则返回NA):
get_mode <- function(x) {
  x_clean <- na.omit(x)
  if (length(x_clean) == 0) return(NA)
  freq_table <- table(x_clean)
  names(freq_table)[which.max(freq_table)]
}
  1. 加载dplyr并处理数据集:
library(dplyr)

df_out2 <- df_out %>%
  mutate(
    across(-name, 
           ~case_when(
             is.na(.) ~ as.character(.),  # 保留原始NA值
             . == get_mode(.) ~ "consensus",
             TRUE ~ "non-consensus"
           ))
  )

运行后得到的df_out2会完全匹配你期望的结果:

  • Factor1中出现次数最多的C被标记为consensus,其余A、B为non-consensus
  • col3中出现次数最多的S被标记为consensus,T为non-consensus
  • col4中出现次数最多的E被标记为consensus,D为non-consensus
  • name列保持原样,NA值也会被保留

内容的提问来源于stack exchange,提问作者Marwah Al-kaabi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:10:33