从R中的一组日期中提取工作日

时间:2016-05-31 11:55:22

标签: r lubridate

我知道使用group(2)包,我可以为每个输入日期生成相应的工作日。我现在正在处理一个包含大量日期条目的大型数据集,我希望为每个日期条目提取工作日。我认为搜索每个日期并找工作日是不可能的。我希望有一个功能,允许我从我的数据框中插入我的日期列,并将产生与框架的每个日期相对应的日期。

我的框架就像

lubridate

我正在尝试生成

uinq_id Product_ID Date_of_order count
1 Aarkios04_2014-09-09  Aarkios04    2014-09-09    10
2    ABEE01_2014-08-18     ABEE01    2014-08-18     1
3    ABEE01_2014-08-19     ABEE01    2014-08-19     0
4    ABEE01_2014-08-20     ABEE01    2014-08-20     0
5    ABEE01_2014-08-21     ABEE01    2014-08-21     0
6    ABEE01_2014-08-22     ABEE01    2014-08-22     0

任何帮助都将非常有益。 谢谢。

3 个答案:

答案 0 :(得分:8)

使用基础R中的weekdays,您可以同时为矢量执行此操作:

temp = data.frame(timestamp = Sys.Date() + 1:20)
> head(temp)
   timestamp
1 2016-06-01
2 2016-06-02
3 2016-06-03
4 2016-06-04
5 2016-06-05
6 2016-06-06
temp$weekday = weekdays(temp$timestamp)
> head(temp)
   timestamp   weekday
1 2016-06-01 Wednesday
2 2016-06-02  Thursday
3 2016-06-03    Friday
4 2016-06-04  Saturday
5 2016-06-05    Sunday
6 2016-06-06    Monday

答案 1 :(得分:4)

我们可以使用format来获取输出

df1$weekday <- format(as.Date(df1$Date_of_order), "%a")
df1$weekday
#[1] "Tue" "Mon" "Tue" "Wed" "Thu" "Fri"

根据?strptime

  

%a - 此平台上当前区域设置中的缩写工作日名称。   (也匹配输入的全名:在某些语言环境中没有   名字的缩写。)

答案 2 :(得分:3)

library(lubridate)

date <- as.Date(yourdata$Date_of_order, format = "%Y/%m/%d")

yourdata$WeekDay <- weekdays(date)