润滑日期到工作日转换错误

lubridate date to weekday conversion error

我目前正在努力获取格式为 month/date/year hour:minute 的星期几的名称。但是包 lubridate 和 命令 file1_frame$day <- wday(file1_frame$V9) OR file1_frame$day <- weekdays(as.Date(file1_frame$V9)) 导致一周中的几天根本不正确。例如,R 中的输出如下所示。

Time                     Day of week
4/6/2018 20:14           Sunday
4/7/2018 2:13            Tuesday

4/6/2018 的正确日期是 "Friday"4/7/2018 的正确日期是 "Saturday"。 这是包问题还是 R studio 问题?我该如何解决这个问题。谢谢

为了 R 正确识别日期,您需要格式化日期。看看 ?as.Date.

library(lubridate)

> weekdays(as.Date("4/6/2018 20:14", "%m/%d/%Y"))
[1] "Friday"
> weekdays(as.Date("4/7/2018 2:13", "%m/%d/%Y"))
[1] "Saturday"

下面是 @jaySF 回复的纯粹 lubridate 替代。我包含了 labelabbr 参数供您参考。如果你想使用缩写或数字,你可以调整它们。

library(lubridate)

wday(mdy_hm("4/6/2018 20:14"), label = T, abbr = F)
# [1] Friday
# Levels: Sunday < Monday < Tuesday < Wednesday < Thursday < Friday < Saturday

wday(mdy_hm("4/7/2018 2:13"), label = T, abbr = F)
# [1] Saturday
# Levels: Sunday < Monday < Tuesday < Wednesday < Thursday < Friday < Saturday

我们可以在没有任何包的情况下做到这一点。使用来自 base R

format
format(as.Date("4/6/2018 20:14", "%m/%d/%Y"), "%A")
#[1] "Friday"

将它包装成一个函数

fwday <- function(date, fmt)  format(as.Date(date, fmt), "%A")
fwday("4/6/2018 20:14", "%m/%d/%Y")
#[1] "Friday"
fwday("4/7/2018 2:13", "%m/%d/%Y")
#[1] "Saturday"