r-删除数字月份前面多余的0



我有一个df,它有一列以character格式存储的日期,我想提取它的月份。为此,我使用以下内容:

mutate(

Date = as.Date(

str_remove(Timestamp, "_.*")

),

Month = month(

Date, 

label = F)

) 

然而,10月、11月和12月的存储在月前有一个额外的零。lubridate库无法识别它。如何调整上面的代码来修复此问题?这是我的Timestamp专栏:

c("2021-010-01_00h39m", "2021-010-01_01h53m", "2021-010-01_02h36m", 
"2021-010-01_10h32m", "2021-010-01_10h34m", "2021-010-01_14h27m"
)

首先将值转换为日期,并使用format从中获取月份。

format(as.Date(x, '%Y-0%m-%d'), '%b')
#[1] "Oct" "Oct" "Oct" "Oct" "Oct" "Oct"

%b提供缩写月份名称,您也可以根据自己的选择使用%B%m

format(as.Date(x, '%Y-0%m-%d'), '%B')
#[1] "October" "October" "October" "October" "October" "October"
format(as.Date(x, '%Y-0%m-%d'), '%m')
#[1] "10" "10" "10" "10" "10" "10"

一种方法是使用strsplit提取第二个元素:

month.abb[readr::parse_number(sapply(strsplit(x, split = '-'), "[[", 2))]

将返回:

#"Oct" "Oct" "Oct" "Oct" "Oct" "Oct"

数据:

c("2021-010-01_00h39m", "2021-010-01_01h53m", "2021-010-01_02h36m", 
"2021-010-01_10h32m", "2021-010-01_10h34m", "2021-010-01_14h27m"
) -> x

相关内容

  • 没有找到相关文章

最新更新