我目前正在使用月/日期/年的小时:分钟的格式来获取工作日的名称。但是,软件包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是否有问题?我该如何解决。谢谢
答案 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
替代方案。我提供了label
和abbr
参数供您参考。如果要使用缩写词或数字,可以对其进行调整。
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"