我的数据集中有一个日期列,格式不正确,如下所示" 825"这意味着8月25日。现在我需要创建一个新列,它将日期列作为输入,并返回我是工作日还是周末,但首先我必须将其转换为正确的格式。
所有日期均为2017年。
答案 0 :(得分:0)
如果您可以从列的非数字版本开始(因此,保持0),可能的解决方案是:
x <- "0825"
x <- paste(x, "2017", sep ="")
y<- as.Date(as.character(x), "%m%d%Y")
wd <- weekdays(y)
编辑:已编辑以添加工作日的代码。
答案 1 :(得分:0)
考虑这个虚拟的例子:
df <- data.frame(orig = c("821", "1201", "121", "111", "222"))
# orig
# 821
# 1201
# 121
# 111
# 222
# Convert it to date
library(lubridate)
df$date <- ymd(paste("2017", gsub("(..)$", " \\1", df$orig)))
# orig date
# 821 2017-08-21
# 1201 2017-12-01
# 121 2017-01-21
# 111 2017-01-11
# 222 2017-02-22
# Extract day and define if it's weekend
df$day <- format(df$date, "%a")
df$weekend <- ifelse(df$day %in% c("Sat", "Sum"), TRUE, FALSE)
# orig date day weekend
# 821 2017-08-21 Mon FALSE
# 1201 2017-12-01 Fri FALSE
# 121 2017-01-21 Sat TRUE
# 111 2017-01-11 Wed FALSE
# 222 2017-02-22 Wed FALSE