如何将R DataFrame中的日期转换为指定格式的字符串?
R实现日期转DD-MMM-YY格式的方案
你需要的格式可以通过R内置的format()函数直接实现,无需额外安装第三方依赖包,具体操作如下:
格式占位符说明
你要的07-JAN-21格式对应三个时间部分的占位符:
%d:两位数字的日期,不足10的日期自动补前导0%b:英文月份缩写(默认输出首字母大写的Jan/Feb格式,转换为全大写即可匹配需求)%y:两位数字的年份,取公元年的后两位
完整代码示例
基础R实现
# 你的示例DataFrame df <- data.frame(dat = seq.Date(from = as.Date("2021-01-01"), to = as.Date("2021-01-07"), by = 1)) # 临时设置时间区域为英文,避免部分中文系统输出中文月份缩写 Sys.setlocale("LC_TIME", "en_US.UTF-8") # 新增字符串类型的转换后字段 df$formatted_dat <- toupper(format(df$dat, "%d-%b-%y")) # (可选)执行完成后改回原有系统locale,中文系统可执行下方注释代码 # Sys.setlocale("LC_TIME", "zh_CN.UTF-8")
tidyverse风格实现(dplyr)
如果你习惯用tidyverse生态,也可以用mutate批量处理:
library(dplyr) df <- df %>% mutate(formatted_dat = toupper(format(dat, "%d-%b-%y")))
输出效果
转换后的数据样例如下:
| dat | formatted_dat |
|---|---|
| 2021-01-01 | 01-JAN-21 |
| 2021-01-02 | 02-JAN-21 |
| 2021-01-03 | 03-JAN-21 |
| 2021-01-04 | 04-JAN-21 |
| 2021-01-05 | 05-JAN-21 |
| 2021-01-06 | 06-JAN-21 |
| 2021-01-07 | 07-JAN-21 |
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

