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

时间:2018-07-09 07:07:45

标签: r lubridate

我目前正在使用月/日期/年的小时:分钟的格式来获取工作日的名称。但是,软件包lubridate和 命令file1_frame$day <- wday(file1_frame$V9)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

正确的日期是"Friday"的{​​{1}}和4/6/2018的{​​{1}}。 包装或R studio是否有问题?我该如何解决。谢谢

3 个答案:

答案 0 :(得分:1)

为使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"

答案 1 :(得分:1)

下面是@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

答案 2 :(得分:1)

我们可以不带任何包装就这样做。使用format中的base R

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"