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

R语言数字转单词功能实现:将月份数字转换为数字-英文月份格式

Convert Numeric Months to "Number-MonthName" Format in R

Got it, let's solve this problem! Converting numeric month values (1 through 12) to the "1-January" style format is straightforward in R, and I’ll share two reliable approaches—one using base R (no extra packages needed) and another with the popular lubridate package for date-focused workflows.

Approach 1: Base R (No External Packages)

R has a built-in vector month.name that contains full English month names in order (January to December), so we can leverage that directly. Here's a robust custom function with input validation to avoid errors:

num_to_month <- function(month_num) {
  # Make sure inputs are valid (1-12)
  if (!all(month_num %in% 1:12)) {
    stop("All values must be integers between 1 and 12!")
  }
  # Combine the numeric value with its corresponding month name
  paste0(month_num, "-", month.name[month_num])
}

Example Usage:

# Test with sample month numbers
num_to_month(c(2, 7, 11, 1))
# Output: [1] "2-February"  "7-July"      "11-November" "1-January"

Approach 2: Using the lubridate Package

If you’re already working with dates/times in R, the lubridate package makes this even more intuitive. Its month() function can return formatted month names directly:

First, install and load the package if you haven’t already:

install.packages("lubridate")
library(lubridate)

Then define the function:

num_to_month_lubridate <- function(month_num) {
  if (!all(month_num %in% 1:12)) {
    stop("All values must be integers between 1 and 12!")
  }
  # Use lubridate's month() to pull full names, then combine with numbers
  paste0(month_num, "-", month(month_num, label = TRUE, abbr = FALSE))
}

Example Usage:

num_to_month_lubridate(c(3, 5, 12))
# Output: [1] "3-March"    "5-May"      "12-December"

Bonus: Get Abbreviated Month Names

If you prefer shorter names like "1-Jan" instead of "1-January", just tweak the code:

  • For base R: Use month.abb instead of month.name
    paste0(1:3, "-", month.abb[1:3])
    # Output: [1] "1-Jan" "2-Feb" "3-Mar"
    
  • For lubridate: Set abbr = TRUE in the month() function
    paste0(1:3, "-", month(1:3, label = TRUE, abbr = TRUE))
    # Output: [1] "1-Jan" "2-Feb" "3-Mar"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:55:13