首页 > 解决方案 > 在 R 中使用具有不寻常日期格式的 lubridate

问题描述

我有一个数据集,我正在尝试处理它的日期格式为数字日月缩写(即 24 月至 2 月)。我想使用 mutate 和 lubridate 将它们分成两个新列,一个代表天,一个代表月。我在处理数字和缩写的语法上有问题。以下代码,我认为这是我正在尝试做的,但它不起作用。提前致谢。

    df <- df %>% 
mutate(Date = dm(bday))

标签: rlubridatedplyr

解决方案


1.dmy()truncated = 1L

ymd()函数族lubridate接受一个参数,该truncated参数告诉您可以省略多少种格式。因此,

library(dplyr)
library(lubridate)
df <- tibble(bday = c("24-Feb", "25-Apr"))

df %>% 
  mutate(Date = dmy(bday, truncated = 1L))
# A tibble: 2 x 2
  bday   Date      
  <chr>  <date>    
1 24-Feb 2021-02-24
2 25-Apr 2021-04-25

2.separate()

OP已要求

我想使用 mutate 和 lubridate 将它们分成两个新列,一个代表天,一个代表月。

可以直接拆分bdayaDay和a列,而无需创建列的中间步骤:MonthDate

library(tidyr)
df %>% 
  separate(bday, c("Day", "Month"), "-", remove = FALSE)
# A tibble: 2 x 3
  bday   Day   Month
  <chr>  <chr> <chr>
1 24-Feb 24    Feb  
2 25-Apr 25    Apr

推荐阅读