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

如何在R语言中批量修改数据框中日期列的格式并保留原列

批量处理DataFrame中的日期列

问题分析

你的代码存在几个关键问题:

  • mutate函数中无法直接嵌套select,批量处理列需要用across函数
  • 数据中的"NA"是字符串类型,不是R原生的缺失值,会导致as.Date转换失败
  • as.Date的format参数用于解析输入日期的格式,若要输出指定格式的字符串,需要搭配format()函数

修正步骤

1. 先处理字符串型缺失值

将数据中date_adm列的"NA"字符串转为R原生的NA:

dat$date_adm[dat$date_adm == "NA"] <- NA

2. 批量转换日期列

根据需求选择以下两种方案:

方案一:转为Date类型(推荐,方便后续日期计算)

将含date的列转为R的Date类型,保留在原DataFrame中:

library(dplyr)

dat <- dat %>%
  mutate(across(contains("date"), ~ as.Date(.x, format = "%Y-%m-%d")))
方案二:转为指定格式的字符串

如果需要将日期转为%d-%m-%Y格式的字符串:

dat <- dat %>%
  mutate(across(contains("date"), ~ format(as.Date(.x, format = "%Y-%m-%d"), "%d-%m-%Y")))

验证结果

执行后打印dat查看效果:

print(dat)
  • Date类型输出:
SSN  date_today   date_adm
1 204 1914-01-01 2020-03-11
2 401 2022-03-12 2022-03-12
3 101 2021-07-09       <NA>
4 666 1914-01-01 2021-04-07
5 777 2022-04-05 2022-04-05
  • 字符串格式输出:
SSN date_today date_adm
1 204 01-01-1914 11-03-2020
2 401 12-03-2022 12-03-2022
3 101 09-07-2021      <NA>
4 666 01-01-1914 07-04-2021
5 777 05-04-2022 05-04-2022

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:25:20