如何在R语言中计算每行前两大值同时位于前两列的占比?
计算每行前两大值均在前两列的占比
可以通过以下步骤实现需求:
方法思路
对数据框的每一行,提取前两个最大值对应的列索引,判断这两个索引是否都属于前两列(列1和列2),最后统计符合条件的行数占总行数的百分比。
具体代码
# 简洁版实现 C <- mean(apply(df, 1, function(r) { # 获取该行前两大值的列索引 top_two_cols <- order(r, decreasing = TRUE)[1:2] # 检查两个索引是否都在前两列 all(top_two_cols %in% 1:2) })) * 100 # 查看结果 C
代码解释
order(r, decreasing = TRUE)[1:2]:对当前行的数值按降序排序,取前两个值对应的原始列位置索引all(top_two_cols %in% 1:2):验证这两个索引是否全部属于前两列的范围(1和2),返回布尔值mean(...) * 100:计算所有行中符合条件的比例,乘以100转换为百分比
内容的提问来源于stack exchange,提问作者nickolakis
相关产品推荐
相关产品推荐

