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

计算数据框行间差值时mr列全为NA的问题排查

问题原因与解决方案

错误原因

你代码里的rowwise()是导致mr列全为NA的核心问题:

  • rowwise()会让后续的mutate进入逐行处理模式,此时lag(y)无法在列的全局范围内获取前一行的y值,只能返回NA。
  • 计算y = days_between^0.2777是逐元素的标量运算,完全不需要rowwise(),这个函数在这里属于多余操作,反而破坏了序列逻辑。

修正后的代码

直接移除rowwise()即可:

tDF <- tDF %>%  
  mutate(days_between = as.numeric(difftime(lubridate::ymd(`Rare event date`), 
                                            lubridate::ymd(lag(`Rare event date`)), 
                                            units = 'days'))) %>% 
  mutate(y = days_between^0.2777) %>% 
  mutate(mr = abs(y - lag(y)))

效果验证

移除rowwise()后,lag(y)会正常在y列的全局序列中取前一行的值,假设第2行y为1.47、第3行y为1.64,第3行的mr就会计算为abs(1.64 - 1.47) = 0.17,符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:45:45