如何从日期时间为月份和年份创建新列,并在 R 中逻辑地比较日期时间



问题 1:我有一个数据,其日期变量采用以下格式:

$ purchase_date: Factor w/ 525 levels "01APR2012:00:00:00"

如何为年份创建新列,为月份创建新列。

问题2:

data2$mydate <- data2$purchase_date
    as.Date(data2$mydate, format = "%d%B%Y") 
    data2$Fyear<-ifelse(data2$mydate>="2011-08-01" & data2$mydate<"2012-08-31",2012,ifelse(data2$mydate>="2012-08-01" & data2$mydate<"2013-08-01",2013,ifelse(data2$mydate<"2011-08-01",2011,2014)))
> class(data2$mydate)
[1] "factor"
> typeof(data2$mydate)
[1] "integer"
Warning messages:
1: In Ops.factor(data2$mydate, "2011-08-01") :
  ‘>=’ not meaningful for factors
2: In Ops.factor(data2$mydate, "2012-08-31") :
  ‘<’ not meaningful for factors

如何从逻辑上比较日期?

非常感谢!

你可以

这样做:

df <- data.frame(date=c("18MAY2013:00:00:00","19MAY2013:00:00:00"))
df$year <- format(as.Date(df$date,"%d%B%Y"),"%Y")
df$month <- format(as.Date(df$date,"%d%B%Y"),"%m")
                date year month
1 18MAY2013:00:00:00 2013    05
2 19MAY2013:00:00:00 2013    05

您可以使用润滑液,并先转换为日期。

library(lubridate)
library(dplyr)
df <- data.frame(date=c("18MAY2013:00:00:00","23MAY2017:00:00:00"))
df2 <- df %>%
     mutate(date = as.Date(date, format = "%d%B%Y:%H:%M:%S"),
            month = month(date),
            year = year(date))
> df2
        date month year
1 2013-05-18     5 2013
2 2017-05-23     5 2017

最新更新