使用不包括周末的日期向量在 R 中创建日期列。

如果我们有一个包含一周中所有天数的日期向量,那么我们可以使用该向量创建一个日期列,方法是在对向量进行子集化的帮助下排除周末,如下面的示例所示。在对向量进行子集化之后,我们只需要在data.frame函数中传递向量。

示例 1

考虑以下日期向量 -

x<-seq(as.Date("2021-07-06"),as.Date("2021-07-25"),by = 1)

要对 x 进行子集化并仅提取上述创建的数据框中的工作日,请将以下代码添加到上述代码段中 -

x<-seq(as.Date("2021-07-06"),as.Date("2021-07-25"),by = 1)
x<-x[!weekdays(x) %in% c("Saturday","Sunday")]

要在上面创建的数据框中创建 x 的日期列,请将以下代码添加到上面的代码段中 -

x<-seq(as.Date("2021-07-06"),as.Date("2021-07-25"),by = 1)
x<-x[!weekdays(x) %in% c("Saturday","Sunday")]
df1<-data.frame(x)
df1
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

        x
1  2021-07-06
2  2021-07-07
3  2021-07-08
4  2021-07-09
5  2021-07-12
6  2021-07-13
7  2021-07-14
8  2021-07-15
9  2021-07-16
10 2021-07-19
11 2021-07-20
12 2021-07-21
13 2021-07-22
14 2021-07-23

示例 2

考虑以下日期向量 -

y<-seq(as.Date("2021-01-01"),as.Date("2021-01-31"),by = 1)

要对 x 进行子集化并仅提取上述创建的数据框中的工作日,请将以下代码添加到上述代码段中 -

y<-seq(as.Date("2021-01-01"),as.Date("2021-01-31"),by = 1)
y<-y[!weekdays(y) %in% c("Saturday","Sunday")]

要在上面创建的数据框中创建 y 的日期列,请将以下代码添加到上面的代码段中 -

y<-seq(as.Date("2021-01-01"),as.Date("2021-01-31"),by = 1)
y<-y[!weekdays(y) %in% c("Saturday","Sunday")]
df2<-data.frame(y)
df2
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

       y
1  2021-01-01
2  2021-01-04
3  2021-01-05
4  2021-01-06
5  2021-01-07
6  2021-01-08
7  2021-01-11
8  2021-01-12
9  2021-01-13
10 2021-01-14
11 2021-01-15
12 2021-01-18
13 2021-01-19
14 2021-01-20
15 2021-01-21
16 2021-01-22
17 2021-01-25
18 2021-01-26
19 2021-01-27
20 2021-01-28
21 2021-01-29

示例 3

考虑以下日期向量 -

z<-seq(as.Date("2021-04-01"),as.Date("2021-04-30"),by=1)

要对 x 进行子集化并仅提取上述创建的数据框中的工作日,请将以下代码添加到上述代码段中 -

z<-seq(as.Date("2021-04-01"),as.Date("2021-04-30"),by=1)
z<-z[!weekdays(z) %in% c("Saturday","Sunday")]

要在上面创建的数据框中创建 z 的日期列,请将以下代码添加到上面的代码段中 -

z<-seq(as.Date("2021-04-01"),as.Date("2021-04-30"),by=1)
z<-z[!weekdays(z) %in% c("Saturday","Sunday")]
df3<-data.frame(z)
df3
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

       z
1  2021-04-01
2  2021-04-02
3  2021-04-05
4  2021-04-06
5  2021-04-07
6  2021-04-08
7  2021-04-09
8  2021-04-12
9  2021-04-13
10 2021-04-14
11 2021-04-15
12 2021-04-16
13 2021-04-19
14 2021-04-20
15 2021-04-21
16 2021-04-22
17 2021-04-23
18 2021-04-26
19 2021-04-27
20 2021-04-28
21 2021-04-29
22 2021-04-30