【问题标题】:Convert date to day-of-week in R在R中将日期转换为星期几
【发布时间】:2016-04-21 15:13:12
【问题描述】:

我的数据框中有一个这种格式的日期:

"02-July-2015"

我需要将其转换为星期几(即 183)。类似的东西:

df$day_of_week <- weekdays(as.Date(df$date_column))

但这不理解日期的格式。

【问题讨论】:

  • 是 7 月 2 日吗?哪年?该日期将在不同年份的不同工作日。
  • 是的,抱歉,现在是 2015 年 7 月 2 日
  • as.Date 的文档指定了一个 format 参数:as.Date("02-July-2015",format = "%d-%B-%Y")
  • as.Date 函数的格式参数,而不是工作日。另外我认为 as.Date 函数只接受月份的缩写。七月 -> 七月
  • 另一个选项是strftime(as.Date("02-Jan-2015",format = "%d-%b-%Y"), format = "%j")

标签: r date


【解决方案1】:

您可以使用 lubridate 转换为星期几或一年中的某一天。

library(lubridate)

# "02-July-2015" is Thursday
date_string <- "02-July-2015"
dt <- dmy(date_string)
dt
## [1] "2015-07-02 UTC"

### Day of week : (1-7, Sunday is 1)
wday(dt)
## [1] 5

### Day of year (1-366; for 2015, only 365) 
yday(dt)
## [1] 183

### Or a little shorter to do the same thing for Day of year
yday(dmy("02-July-2015"))
## [1] 183

【讨论】:

    【解决方案2】:
    day = as.POSIXct("02-July-2015",format="%d-%b-%Y")
    
    # see ?strptime for more information on date-time conversions
    
    # Day of year as decimal number (001–366).
    format(day,format="%j")
    [1] "183"
    
    #Weekday as a decimal number (1–7, Monday is 1).
    format(day,format="%u")    
    [1] "4"
    

    【讨论】:

      【解决方案3】:

      这就是anotherFishGuy 的假设,加上将值转换为as.numeric 以便它们适合分类器。

      # day <- Sys.time()
      as.num.format <- function(day, ...){
         as.numeric(format(day, ...))
      }
      doy <- as.num.format(day,format="%j")
      doy <- as.num.format(day,format="%u")
      hour <- as.num.format(day, "%H")
      

      【讨论】:

        猜你喜欢
        • 2012-08-12
        • 2011-01-29
        • 2014-01-11
        • 2020-12-14
        • 1970-01-01
        • 2015-08-02
        • 2016-01-05
        • 2020-01-23
        • 1970-01-01
        相关资源
        最近更新 更多