为R语言DataFrame添加列以计算指定行内值的最大重复率
解决方法
你可以用以下两种方式实现需求:
方法一:Base R 实现
# 定义原始数据框 df <- data.frame(ID = c(1,2,3,4,5), Total = c(1,1,2,1,2), Ma = c(1,2,1,2,1), Mb = c(1,2,1,2,2), Md = c(1,2,1,2,1), Me = c(1,1,1,2,2)) # 添加重复率列 df$rep.rate <- apply(df[, c("Total", "Ma", "Mb", "Md", "Me")], 1, function(row) { # 统计当前行各数值的出现频次 freq <- table(row) # 计算最高频次占总列数的比例 max(freq) / length(row) }) # 验证结果 df$rep.rate # 输出: [1] 1.0 0.6 0.8 0.8 0.6
逻辑说明
apply(..., 1, ...)指定按行处理数据框中Total到Me的5列table(row)统计当前行内每个数值的出现次数- 取频次最大值除以总列数(5),得到目标重复率
方法二:Tidyverse 实现
如果你习惯使用dplyr等tidyverse工具,可以用逐行处理的方式:
library(dplyr) df <- df %>% rowwise() %>% mutate(rep.rate = { # 提取当前行的目标列值 row_data <- c(Total, Ma, Mb, Md, Me) # 统计频次并计算重复率 max(table(row_data)) / length(row_data) }) %>% ungroup() # 验证结果 df$rep.rate
内容的提问来源于stack exchange,提问作者Courtney
相关产品推荐
相关产品推荐

