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

如何在R语言中依据某列最小值提取整行数据并生成新值

在R中自动提取最小值所在行的变量生成新值

完全可以不用手动查找,以下是两种常用的实现方法:

基础R方法

假设你的数据集名为df,要找最小值的变量是target_col,需要提取的变量是col1、col2:

  1. 先定位最小值所在的行索引:
min_row_idx <- which.min(df$target_col)
  1. 提取该行的指定变量生成新值(这里用下划线拼接为例,你可以根据需求调整逻辑):
new_value <- paste(df[min_row_idx, "col1"], df[min_row_idx, "col2"], sep = "_")
  1. 如果要把这个值添加到原数据集的对应行(其他行设为NA):
df$new_column <- ifelse(1:nrow(df) == min_row_idx, new_value, NA)

tidyverse(dplyr)方法

如果习惯用tidyverse语法,步骤更直观:

  1. 加载dplyr包:
library(dplyr)
  1. 提取最小值行的指定变量并生成新值:
min_row_data <- df %>%
  slice_min(target_col, n = 1) %>% # 选取target_col最小的1行,若有多个最小值可调整n或用filter
  select(col1, col2)

new_value <- paste(min_row_data$col1, min_row_data$col2, sep = "_")
  1. 给原数据集添加对应新列:
df <- df %>%
  mutate(new_column = ifelse(target_col == min(target_col), paste(col1, col2, sep = "_"), NA))

注意:如果数据集中有多行都取到该变量的最小值,which.min()只会返回第一个匹配的行索引;而用filter(target_col == min(target_col))或slice_min(target_col, n = Inf)可以选中所有最小值行,按需调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:48:46