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

R语言如何提取dataframe日期列子串映射生成Order.Month新列

R语言实现日期转月份名的最优方案

针对你的需求,优先推荐使用专门处理日期的lubridate包实现,不需要手动拆分字符串,容错率更高,也符合R语言日期处理的最佳实践,也提供无需额外装包的base R方案可选:

方案1:tidyverse生态(首推)

该方案代码简洁可读性高,自动适配M/D/YY和MM/DD/YY两种格式,无需手动处理字符串匹配逻辑:

# 未安装包先运行:install.packages(c("dplyr", "lubridate"))
library(dplyr)
library(lubridate)

# 你定义的完整月份名向量
custom_months <- c('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December')

# 生成Order.Month新列
df <- df %>%
  mutate(Order.Month = custom_months[month(mdy(`ï..Order.Date`))])

说明:mdy()函数会自动识别月/日/年格式的字符串日期,month()函数提取对应月份的整数数值,直接索引你定义的月份向量即可完成映射,带特殊字符的列名ï..Order.Date需要用反引号包裹才能正常识别。

方案2:base R实现(无需安装额外包)

如果你不想依赖第三方包,可以用正则提取月份后映射:

# 你定义的完整月份名向量
custom_months <- c('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December')

# 提取月份数字后映射为月份名
month_num <- as.integer(sub("/.*", "", df$`ï..Order.Date`))
df$Order.Month <- custom_months[month_num]

说明:sub("/.*", "", x)会替换掉第一个斜杠及之后的所有内容,提取出开头的月份字符串,转为整数后索引月份向量即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:24:04