如何从R中的日期中提取月份和日期并将其转换为日期类型?

use*_*933 6 r date lubridate

Rstudio参加我的R会议,我有以下R代码:

d1 <- read.csv("mydata.csv", stringsAsFactors = FALSE, header = TRUE)

d2 <- d1 %>% 
      mutate(PickUpDate = ymd(PickUpDate))

str(d2$PickUpDate)
Run Code Online (Sandbox Code Playgroud)

上面最后一行代码的输出如下:

Date[1:14258], format: "2016-10-21" "2016-07-15" "2016-07-01" "2016-07-01" "2016-07-01" "2016-07-01" ...
Run Code Online (Sandbox Code Playgroud)

我需要在 中添加一个附加列(我们称之为MthDDdataframe d2,这将是“ ”列的月份和日期PickUpDate。因此,列MthDD需要采用格式mm-dd,但最重要的是,它仍然应该是date type.

我怎样才能实现这个目标?

更新:我已尝试以下操作,但它将新列输出为字符类型。我需要该列为日期类型,以便我可以将其用作绘图的 x 轴组件。

d2$MthDD <- format(as.Date(d2$PickUpDate), "%m-%d")
Run Code Online (Sandbox Code Playgroud)

G. *_*eck 4

Date对象不显示为 mm-dd。您可以使用该表示形式创建一个字符串,但它将不再属于Date类——它将属于character类。

如果您想要一个显示为 mm-dd 且仍然像Date对象一样运行的对象,您可以做的是创建一个新的 S3 子类,Date该子类以您想要的方式显示并使用它。这里我们创建了一个带有泛型、方法、方法和方法的DateCalled子类。显示时将使用最后一个。 将从类继承方法,但您可能仍然需要定义其他方法,具体取决于您还想做什么——您可能需要进行一些实验。mmddas.mmddas.mmdd.Dateas.Date.mmddformat.mmddmmddDate

as.mmdd <- function(x, ...) UseMethod("as.mmdd")
as.mmdd.Date <- function(x, ...) structure(x, class = c("mmdd", "Date"))

as.Date.mmdd <- function(x, ...) structure(x, class = "Date")

format.mmdd <- function(x, format = "%m-%d", ...) format(as.Date(x), format = format, ...)

DF <- data.frame(x = as.Date("2018-03-26") + 0:2) # test data

DF2 <- transform(DF, y = as.mmdd(x))
Run Code Online (Sandbox Code Playgroud)

给予:

> DF2
           x     y
1 2018-03-26 03-26
2 2018-03-27 03-27
3 2018-03-28 03-28

> class(DF2$y)
[1] "mmdd" "Date"

> as.Date(DF2$y)
[1] "2018-03-26" "2018-03-27" "2018-03-28"
Run Code Online (Sandbox Code Playgroud)