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

r programmingserver side programmingprogramming

如果我们有一个包含一周内所有天数的日期向量,那么我们可以使用该向量通过排除周末来创建日期列,并借助对向量进行子集化,如下面的示例所示。对向量进行子集化后,我们只需要在 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

相关文章