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

使用dplyr::rowwise与min时输出单行值而非逐行值的异常问题

解决rowwise()+min()计算逐行日期最小值异常的问题

问题根源

你当前代码中,min(as.Date(date1), as.Date(date2), na.rm = T) 实际是计算**date1和date2两列的全局最小值**,而非逐行取对应位置的两个日期的最小值。即便添加了rowwise(),直接传入列向量给min()不会触发逐行计算逻辑。另外你的date1、date2已是Date类型,无需重复转换。

修复方法

方法1:用pmin()(无需rowwise(),更高效)

pmin()是向量化的逐行最小值函数,专门处理按元素对取最小的场景:

df <- indf %>%
  mutate(test = pmin(date1, date2, na.rm = TRUE))

方法2:结合rowwise()与c()(显式构造行内向量)

若坚持用rowwise(),需将每行的两个日期打包成向量再取最小值,且用完后建议取消分组避免后续操作异常:

df <- indf %>%
  rowwise() %>%
  mutate(test = min(c(date1, date2), na.rm = TRUE)) %>%
  ungroup()

验证结果

用你提供的数据测试,两种方法均会生成正确的逐行最小值:

iddate1date2test
5001NA2020-08-012020-08-01
30022020-12-192020-12-172020-12-17
2001NA2021-01-272021-01-27
1001NA2021-03-042021-03-04
6001NA2021-03-072021-03-07
9001NA2021-03-252021-03-25

注:你的原始代码末尾缺失一个闭合括号,修复后的代码已补全语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:42:51