如何在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
相关产品推荐
相关产品推荐

