在月份数字字符串中插入前导零

问题描述 投票:0回答:1

我有一个关于月份数字的字符串输入,例如十月是

"10"
,十一月是
"11"

我的第一个目标是导出字符串中的下个月数字,例如如果字符串是

"10"
我的输出应该是
"11"
。这有效,

mon_num <- "09"
as.character(match(month.abb[as.numeric(mon_num) + 1], month.abb))

我的第二个要求是字符串应该有两个字符。这意味着,如果输入字符串是

"02"
,则输出应该是
"03"
。然而,上面的代码行会产生
"3"
。有没有办法导出
"03"
而不是
"3"
.

我的第二个问题是,如果输入是

"12"
,则输出是
NA
。怎么做
"01"

r tidyverse
1个回答
0
投票

这是一个处理这个问题的函数 -

get_next_month <- function(mon_num) {
  stopifnot("month number should be between 1 and 12" = 
            mon_num >= 1 && mon_num <= 12)
  if(mon_num == 12) return("01")
  nm <- match(month.abb[as.numeric(mon_num) + 1], month.abb)  
  sprintf("%02s", nm)
}

get_next_month(2)
#[1] "03"
get_next_month(10)
#[1] "11"
get_next_month(12)
#[1] "01"
get_next_month(15)

get_next_month(15) 中的错误:月份数应在 1 到 12 之间

© www.soinside.com 2019 - 2024. All rights reserved.