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

如何在R中导入CSV内dd/mm/yyyy hh:mm格式日期并转换为短日期

R处理CSV中dd/mm/yyyy hh:mm格式日期的解决方案

导入时直接指定解析格式(推荐,适合大文件)

使用readr包读取CSV时直接指定日期列的格式,避免自动识别时日月颠倒,读取效率远高于base R内置函数,适合大体积CSV批量处理:

library(readr)
# 单文件导入,将"date_col"替换为你实际的日期列名
df <- read_csv("target_file.csv",
  col_types = cols(
    date_col = col_datetime(format = "%d/%m/%Y %H:%M")
  )
)

# 批量导入同文件夹下所有CSV
file_list <- list.files(path = "csv_folder_path", pattern = "\\.csv$", full.names = TRUE)
df_list <- lapply(file_list, function(x) {
  read_csv(x, col_types = cols(date_col = col_datetime("%d/%m/%Y %H:%M")))
})

已导入数据的格式修正

如果数据已经导入为字符型或错误的日期格式,使用lubridate包的dmy_hm函数直接解析,无需手动拆分字符串:

library(lubridate)
# 自动识别日/月/年 时:分的格式,不会出现日月颠倒问题
df$date_col <- dmy_hm(df$date_col)

导出到Excel时指定日期格式

导出时使用openxlsx包设置单元格格式,避免Excel自动修改日期显示规则:

library(openxlsx)
# 先去除时分秒,仅保留日期部分
df$date_col <- as.Date(df$date_col)

# 生成Excel文件
wb <- createWorkbook()
addWorksheet(wb, "Sheet1")
# 按需设置输出格式:dd/mm/yyyy对应4位年,dd/mm/yy对应2位年
date_style <- createStyle(numFmt = "dd/mm/yyyy")
writeData(wb, "Sheet1", df)
# 将列号替换为你实际的日期列所在位置
addStyle(wb, "Sheet1", style = date_style, cols = 2, rows = 2:(nrow(df)+1), gridExpand = TRUE)
saveWorkbook(wb, "output_file.xlsx", overwrite = TRUE)

注意事项

  • 格式占位符严格对应:%d=日期,%m=月份,%Y=4位年份,%y=2位年份,%H=24小时制小时,%M=分钟
  • 无需提前打开CSV修改格式,上述流程可以直接处理GB级别的CSV文件
  • 多日期列场景下,在col_types参数中依次添加所有日期列的格式规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:06:01