在R语言中如何获取每行非缺失日期的最小值?
解决方法
这里提供两种在R语言中生成目标列的常用方式:
方法1:基础R的apply函数
直接使用基础R的apply函数逐行处理指定列,忽略缺失值后取最小值:
# 生成新列min_date,计算每行三个日期列的非缺失最小值 dat$min_date <- apply(dat[, c("EOTDT", "DTHDT", "EOSDT")], 1, function(x) min(x, na.rm = TRUE)) # 查看结果 dat
运行后第一行的min_date为2021-08-17,符合预期。
方法2:tidyverse框架的dplyr包
如果习惯使用tidyverse风格的代码,可用rowwise()和c_across()实现:
library(dplyr) dat <- dat %>% rowwise() %>% mutate(min_date = min(c_across(EOTDT:EOSDT), na.rm = TRUE)) %>% ungroup() # 查看结果 dat
这种方式更贴合tidy数据处理逻辑,适合后续需进行更多数据操作的场景。
内容的提问来源于stack exchange,提问作者MKro
相关产品推荐
相关产品推荐

