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

R语言中验证数据框指定行X1为最大值并计算符合百分比

解决R语言中筛选指定行并计算符合条件行的百分比问题

步骤说明

  1. 生成目标行索引:选取行号为1、6、11…46的行,用seq(1, 46, by = 5)生成索引序列。
  2. 提取目标行数据:根据索引筛选对应行,同时保留所有以"X"开头的列(通用场景下用正则匹配列名,兼容非X开头列的情况)。
  3. 判断每行符合条件:检查每行X1的值是否等于该行所有X开头列的最大值。
  4. 计算百分比:统计符合条件的行数占目标总行数的比例,转换为百分比。

完整代码实现

# 生成示例数据框(设置随机种子保证结果可复现)
set.seed(123)
A <- as.data.frame(matrix(rnorm(50 * 10, mean = 0, sd = 1), 50, 10))
colnames(A) <- c("X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10")

# 1. 生成目标行的索引
target_rows <- seq(1, 46, by = 5)

# 2. 提取目标行中所有以X开头的列数据
target_data <- A[target_rows, grepl("^X", colnames(A))]

# 3. 判断每行的X1是否为该行的最大值
is_condition_met <- target_data$X1 == apply(target_data, 1, max)

# 4. 计算符合条件的行所占百分比
result_percent <- mean(is_condition_met) * 100

# 输出结果(保留两位小数)
cat("符合条件的行所占百分比:", round(result_percent, 2), "%\n")

代码细节解释

  • set.seed(123):固定随机种子,确保每次运行生成的随机数据一致,便于测试验证。
  • grepl("^X", colnames(A)):用正则表达式匹配所有以"X"开头的列名,让代码适配存在非X开头列的通用场景。
  • apply(target_data, 1, max):对目标数据的每一行(1代表行维度)计算最大值。
  • mean(is_condition_met):逻辑向量中TRUE会被识别为1,FALSE识别为0,取均值直接得到符合条件的比例,乘以100转为百分比。

内容的提问来源于stack exchange,提问作者nickolakis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:45:39