2016-05-31 43 views
-2

我知道使用lubridate包,我可以为每个日期生成相应的工作日。我现在正在处理一个有大量日期条目的大数据集,我希望为每个日期条目提取平日。我认为搜索每个日期并找到工作日是不可能的。我很想拥有一个功能,允许我从我的数据框中插入日期列,并将生成与框架的每个日期相对应的日期。从R中的一组日期提取工作日

我的帧像

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 

我试图产生

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

任何帮助将是非常有益的。 谢谢。

回答

1

我们可以使用format得到输出

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

根据?strptime

%一 - 在这个平台上当前区域简写的星期几。 (也匹配全名输入:在某些地区有名字的没有 缩写。)

+0

它工作得很好。我是R.的新手,你能告诉我“%a”意味着什么吗? –

+1

@HindolGanguly根据'?strptime''%a - 此平台上当前语言环境中的缩写星期几名称。 (在输入时也匹配全名:在某些语言环境中,没有名称的缩写。)' – akrun

+0

好吧,那很好。我还可以使用相同的软件包查找周数和月份名称吗?我应该用什么来代替“%a”? –

4

从基础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