如何在R语言中基于两个现有变量的较小值创建新变量
在R中按行取两列最小值创建新变量
先模拟你的示例数据集:
df <- data.frame( a1 = c(3, 1, 0), a2 = c(2, 5, 7), row.names = c("x1", "x2", "x3") )
方法1:基础R原生函数 pmin()
这是最简洁高效的方式,pmin() 会按行对多个向量取最小值,完全适配大数据集:
# 创建新变量b df$b <- pmin(df$a1, df$a2) # 查看结果 df # a1 a2 b # x1 3 2 2 # x2 1 5 1 # x3 0 7 0
方法2:使用dplyr(tidyverse生态)
如果你习惯用tidyverse的语法,也可以结合mutate()实现:
library(dplyr) # 直接用pmin在mutate中(高效) df <- df %>% mutate(b = pmin(a1, a2)) # 或者用rowwise+min(适合需要扩展到更多列的场景) df <- df %>% rowwise() %>% mutate(b = min(a1, a2)) %>% ungroup()
两种方法都不需要手动逐行设置,pmin()是矢量化操作,处理大规模数据集时性能表现优异。
内容的提问来源于stack exchange,提问作者ConfusedGradStudent
相关产品推荐
相关产品推荐

