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

R语言日期格式转换失败求助:yyyy-mm-dd转mm/dd/yyyy

问题解决:将yyyy-mm-dd日期格式转换为mm/dd/yyyy

问题描述

需要将格式为yyyy-mm-dd的日期转换为mm/dd/yyyy,尝试多种方法后要么无效果,要么出现以下错误:

警告信息:
计算date = lubridate::mdy(date)时出现问题。
ℹ 所有格式解析失败,未找到匹配格式。

mutate()报错:
! 计算date = format(date, "%m/%d/%Y")时出现问题。
由format.default()中的错误导致:
! invalid 'trim' argument
回溯:

  1. mass %>% mutate(date = format(date, "%m/%d/%Y"))
  2. base::format.default(date, "%m/%d/%Y")

尝试的代码如下:

library(dplyr)
library(lubridate)

mass = read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/mass_killing_incidents_public.csv')

mass2 = mass
mass2$date = format(mass$date, format = "%m/%d/%Y")

mass2 = mass %>%
  mutate(date = lubridate::mdy(date),
         date = strftime(date, "%m/%d/%Y"))

mass2 = mass %>% 
  mutate(date = format(date, '%m/%d/%Y'))

错误原因

  1. 解析函数匹配错误:原日期是yyyy-mm-dd格式,却用了针对月-日-年格式的lubridate::mdy()解析,导致格式匹配失败。
  2. 函数参数类型错误:format()要求输入为标准日期/时间对象(如Date类型),但read.csv读入的date列是普通字符串,直接调用会触发参数不匹配的错误。

解决方法

核心逻辑是先把字符串格式的日期转为标准Date对象,再重新格式化为目标字符串格式。

方法一:lubridate + dplyr 实现

library(dplyr)
library(lubridate)

mass = read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/mass_killing_incidents_public.csv')

# 先解析为Date对象,再格式化为目标格式
mass2 = mass %>%
  mutate(date = ymd(date),  # 用ymd解析yyyy-mm-dd格式字符串
         date = format(date, "%m/%d/%Y"))  # 转换为mm/dd/yyyy格式

方法二:仅用base R实现

mass = read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/mass_killing_incidents_public.csv')

# 转换为Date对象,再格式化
mass$date = as.Date(mass$date, format = "%Y-%m-%d")
mass$date = format(mass$date, "%m/%d/%Y")

执行后查看date列,会得到mm/dd/yyyy格式的日期字符串,比如01/01/2013。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:25:22