如何在R语言数据框中提取某行前两大值对应列的另一行值
解决R语言数据框取对应列值的问题
嘿,我来帮你搞定这个需求!你已经找到了行"a"的两个最大值,但要拿到行"e"对应列的值,关键是要先获取这两个最大值所在的列名,而不是只拿到值本身,这样才能精准匹配行"e"的对应位置。
具体步骤:
- 第一步:获取行"a"中值最大的前两列的列名(保持从大到小的顺序)
这里用order()函数来获取排序后的列索引,再转成列名,比直接用sort()更适合后续匹配:# 获取行a前两大值对应的列名 top_two_cols <- names(df)[order(df["a", ], decreasing = TRUE)[1:2]] - 第二步:用拿到的列名提取行"e"对应的值
直接用列名索引行"e"就能得到想要的结果,顺序和行a的最大值顺序一致:# 提取行e对应列的值 df["e", top_two_cols]
完整代码演示
把你的原始数据和上面的步骤整合起来,运行后就能看到结果:
# 构建原始数据框 rows <- c("a","b","c","d","e","f","g","h","i") x1 <- c(1,4,5,7,5,8,9,0,5) x2 <- c(3,3,5,6,7,8,9,0,7) x3 <- c(3,1,4,6,7,8,9,5,2) df <- data.frame(x1=x1,x2=x2, x3=x3, row.names = rows) # 获取行a前两大值的列名 top_two_cols <- names(df)[order(df["a", ], decreasing = TRUE)[1:2]] # 提取行e对应的值 result <- df["e", top_two_cols] print(result)
运行后会输出行"e"中对应行"a"前两大值的列的值,顺序和行a的最大值顺序一致(这里行a的最大值是x2=3、x3=3,所以行e对应的值是7和7)。
如果你想把结果转成更简洁的向量格式,直接用as.vector(result)就行~
内容的提问来源于stack exchange,提问作者melanie chetry
相关产品推荐
相关产品推荐

