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

在R语言中将CSV数据的字符串月份转换为数值的方法

将字符串类型的月份转换为数值类型(R语言)

刚好碰到过类似的需求,给你几个实用的方法来解决这个问题:

方法1:用R内置的month.name处理完整月份名称

因为你提到的是完整的月份字符串(比如September),R内置了一个按1-12月顺序排列的完整月份名称向量month.name,直接用match()就能快速映射到对应的数值:

# 假设你的数据框是df,Month列是完整英文月份
df$Month_num <- match(df$Month, month.name)

如果你的Month列存在大小写不统一的情况(比如有的是september,有的是September),可以用stringr包的str_to_title()先统一格式:

library(stringr)
df$Month_num <- match(str_to_title(df$Month), month.name)

方法2:用lubridate包灵活处理(推荐)

如果你已经在使用tidyverse(毕竟你用了read_csv()),lubridate包处理日期相关的转换会更灵活,不管是完整月份还是缩写都能自动识别:

library(lubridate)
# 方式1:拼接成完整日期后提取月份数值
df$Month_num <- month(dmy(paste("1", df$Month, "2020")), label = FALSE)

# 方式2:直接解析月份字符串
df$Month_num <- parse_date_time(df$Month, orders = "m") %>% month()

补充:针对月份缩写的情况

如果你的Month列是缩写形式(比如Sep),就用R内置的month.abb向量,和你给出的代码逻辑一致:

month_abbr <- c('Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug')
match(month_abbr, month.abb)
# 输出结果:[1] 9 10 11 12  1  2  3  4  5  6  7  8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:32:51