在 R 中将日期转换为天数(星期一 = 1,星期二 = 2)

Convert a date to a day number (monday = 1, tuesday = 2) in R

谁能帮我解决以下问题:

我有一个日期,例如:3-1-2014,

我想把它转换成数字 5,因为今天是星期五。

所以 7-1-2014 将是 1,因为它是星期一。

哪个 package/code 可以帮我做这个?

谢谢

您可以使用 lubridate 轻松完成此操作,尽管它会将星期日索引为“1”。因此,由于 2014 年 3 月 1 日是星期六,它将 return '7'

library(lubridate)
wday(mdy("3-1-2014"))
[1] 7

使用包 "lubridate" 几乎就是答案。它将周日索引为“1”,周六索引为“6”,但您可以通过显示前一天的星期几来简单地移动一天:

library(lubridate) 
wday(mdy("3-1-2014") -1)
[1] 6

使用 R base,您可以使用带有“%u”格式参数的 strftime 函数来 return 工作日。

as.numeric(strftime(as.Date('3-1-2014', "%d-%m-%Y"), "%u"))
[1] 5

现在您可以将 week_start 选项与 wday()

一起使用

day on which week starts following ISO conventions - 1 means Monday, 7 means Sunday (default). You can set lubridate.week.start option to control this parameter globally.

所以下面的代码给出了期望的输出

library(lubridate) 
lubridate::wday(mdy("3-1-2014"), week_start = 1)
[1] 6

请注意 data.table 库具有同名函数 wday() 但没有 week_start 选项。