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

R语言Cyclistic项目日期转换报错及NA问题技术求助

问题原因与解决方法

你的三段代码错误原因:

  • 第一段代码df$date<-as.Date(df$started_at):as.Date()默认仅识别无歧义的标准日期格式(比如YYYY-MM-DD),你的数据是带时间的月/日/年 时:分格式,默认解析规则无法匹配,因此报错。
  • 第二段代码df$date<-as.Date(df$started_at,format = "%y%m%d"):格式字符串%y%m%d对应的是无分隔符的两位年+月+日(例如200426),但你的数据是带斜杠分隔的4/26/2020,格式完全不匹配,所以返回NA。
  • 第三段代码strptime(df$started_at,"%y-%m-%d %H: %M: %S"):格式字符串要求的是两位年-月-日 小时: 分钟: 秒(你还额外多打了空格),但你的数据是四位年、斜杠分隔、无秒数,格式不匹配导致解析失败,返回NA。

正确处理步骤:

你的日期时间格式是月/日/四位年 24小时制小时:分钟,对应格式字符串为"%m/%d/%Y %H:%M",先将字符型的started_at转为日期时间类型,再提取所需列:

# 方法1:用基础R处理
# 1. 转换为POSIXct日期时间类型(更适合数据框操作)
df$started_at <- as.POSIXct(df$started_at, format = "%m/%d/%Y %H:%M")

# 2. 提取各日期字段
df$date <- as.Date(df$started_at)
df$day <- as.integer(format(df$started_at, "%d"))  # 数值型日
df$month <- as.integer(format(df$started_at, "%m")) # 数值型月
df$year <- as.integer(format(df$started_at, "%Y"))  # 数值型年

# 方法2:用lubridate包更简洁(已安装的话)
library(lubridate)
df$started_at <- mdy_hm(df$started_at)
df$date <- date(df$started_at)
df$day <- day(df$started_at)
df$month <- month(df$started_at)
df$year <- year(df$started_at)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:32:21