在R中将数字/字符列转换为日期格式

时间:2017-11-22 11:14:57

标签: r

我的数据集中有一个日期列,格式不正确,如下所示" 825"这意味着8月25日。现在我需要创建一个新列,它将日期列作为输入,并返回我是工作日还是周末,但首先我必须将其转换为正确的格式。

所有日期均为2017年。

2 个答案:

答案 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