【问题标题】:How can I create a new column for month and year from datetime and logically compare date time in R [closed]如何从日期时间创建月份和年份的新列并在 R [关闭] 中逻辑比较日期时间
【发布时间】:2017-11-19 21:11:29
【问题描述】:

问题 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

如何在逻辑上比较日期?

非常感谢!

【问题讨论】:

  • (1) 你认为and 是做什么的?试试&amp;。 (2) 比较字符串可能会导致错误的结果。在第二个比较中,您根本不使用任何引号。语法错误是您主要关心的问题之一。请提供一个可重复的示例和所需的结果,以便人们可以尝试提供帮助。
  • 还是不行。
  • & 你需要引用你的日期并将它们转换为日期/日期时间; R 不知道如何处理12AUG2012。请参阅?as.Date?as.POSIXct 和格式化字符串?strptime
  • as.Date("18MAY2013:00:00:00", "%d%B%Y") - 这有帮助吗?现在您可以与其他日期进行合乎逻辑的比较。
  • 它有帮助。谢谢!这是我的第一个问题。我试图把这个问题说清楚。

标签: r date


【解决方案1】:

你可以这样做:

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

【讨论】:

  • 它有效。非常感谢!
【解决方案2】:

你可以使用lubridate,先转换成日期。

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

【讨论】:

  • 它说:找不到函数“%>%”
  • 啊抱歉 - 还需要加载包 library(dplyr) .. 我会编辑答案
猜你喜欢
  • 2018-10-15
  • 2021-09-08
  • 2017-04-23
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多