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

R使用dplyr的mutate计算日期与Sys.Date()间隔返回NA如何解决?

问题原因

你的代码返回全NA的核心问题是as.Date()的格式参数和实际日期字符串的格式不匹配:
你数据中date列的日期格式为月/日/年(例:10/7/2021对应2021年10月7日),但你指定的format="%Y-%m-%d"是「年-月-日」的格式,完全无法匹配,导致所有日期转换失败返回NA,最终差值计算结果也全为NA。

修复后的代码

只需把日期格式参数改为匹配你数据的%m/%d/%Y即可,同时Sys.Date()本身就是Date类型,无需重复转换:

library(dplyr)
data %>% 
  select(id, date) %>% 
  mutate(days_since = Sys.Date() - as.Date(date, format = "%m/%d/%Y"))

如果你需要得到纯数值类型的天数而非difftime类型,可以在外层套as.integer():

mutate(days_since = as.integer(Sys.Date() - as.Date(date, format = "%m/%d/%Y")))

小提示:如果遇到日期转换全为NA的问题,可以先单独测试单个日期字符串的转换结果,确认格式参数是否正确,比如运行as.Date("10/7/2021", format = "%m/%d/%Y")验证转换是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:15:03