【问题标题】:How to format date as day name + number of week如何将日期格式化为日期名称+周数
【发布时间】:2019-12-09 15:50:20
【问题描述】:

我想将日期格式设置为 WEEK NUMBER IN CURRENT MONTH + DAYNAME。换句话说,今天 - “2019-12-09” 将是 2 - Monday

我创建了这段代码

day_name <- format(Sys.Date(), "%w")

day30_name <- 
case_when (
  day_name == 1 ~ "Monday",
  day_name == 2 ~ "Tuesday",
  day_name == 3 ~ "Wednesday",
  day_name == 4 ~ "Thursday",
  day_name == 5 ~ "Friday",
  day_name == 6 ~ "Saturday",
  day_name == 0 ~ "Sunday",
  TRUE ~ "?")

但老实说,我不知道如何处理周数

【问题讨论】:

  • 不会weekdays(Sys.Date()) 工作
  • 您应该查看strftime 的文档,其中包含所有格式选项的列表。您使用了%w,它返回星期几。 %A 会给你星期几的名字;对于周数,有几个选项取决于语言环境
  • 日期名称 here 有 7 个答案,周数 here 有 8 个答案。这两个帖子的组合不包括它吗?

标签: r date


【解决方案1】:

lubridate 中有一个week 函数,它给出了一年中的一周。

我在下面创建了一个函数。

WeekNum_DayName <- function(x) {

    week_month_start <- week(floor_date(x, 'month')) # week number of first of the month
    week_num <- week(x) - week_month_start + 1 # week number from month start
    day_name <- as.character(wday(x, label = TRUE, abbr = FALSE))
    str_c(week_num, day_name, sep = ' - ') # combine them
}

x <- ISOdate(year=2019, month=12, day=9, hour = 12, min = 0, sec = 0, tz = "GMT")
WeekNum_DayName(x)

#[1] "2 - Monday"

x <- as.Date('2019-01-01')
WeekNum_DayName(x)

#[1] "1 - Tuesday"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多