Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎样才能在r获得下个月的第一个工作日_R - Fatal编程技术网

我怎样才能在r获得下个月的第一个工作日

我怎样才能在r获得下个月的第一个工作日,r,R,嗨,我正在努力创造一个价值,告诉我下个月的第一个工作日是什么 首先,我创建了一个查找表,其中列出了所有的第一个工作日: closedaylookup这里有一种方法:首先在业务日期中添加一个month编号。然后,对于要查找的任何日期,首先在日期上添加一个月(使用lubridate的%m+%months(1),以避免滚动,然后使用该日期的月份进行联接。下面是一个可复制的示例(仅使用问题中的几个日期) 库(tidyverse) 图书馆(lubridate) df_结束日% 左联合( df_close_

嗨,我正在努力创造一个价值,告诉我下个月的第一个工作日是什么

首先,我创建了一个查找表,其中列出了所有的第一个工作日:


closedaylookup这里有一种方法:首先在业务日期中添加一个
month
编号。然后,对于要查找的任何日期,首先在日期上添加一个月(使用lubridate的
%m+%months(1)
,以避免滚动,然后使用该日期的月份进行联接。下面是一个可复制的示例(仅使用问题中的几个日期)

库(tidyverse)
图书馆(lubridate)
df_结束日%
左联合(
df_close_day,by=c(“下一个月”=“第一个营业日的月”)
)
#>原始日期下个月下个月第一个营业日
#>2018-12-21 2019-01-21 2019-01-02年1月1日
#>2 2019-01-01 2019-02-01 2 2019-02-01二月2日
#>3 2019-01-31 2019-02-28 2019-02-01年2月2日
#>4 2019-02-15 2019-03-15 2019-03-01年3月3日

这里有一种方法:首先在业务日期中添加一个月号。然后,对于要查找的任何日期,首先在日期中添加一个月(使用lubridate的
%m+%months(1)
,以避免滚动,并使用该日期的月份进行连接。下面是一个可复制的示例(仅使用问题中的几个日期)

库(tidyverse)
图书馆(lubridate)
df_结束日%
左联合(
df_close_day,by=c(“下一个月”=“第一个营业日的月”)
)
#>原始日期下个月下个月第一个营业日
#>2018-12-21 2019-01-21 2019-01-02年1月1日
#>2 2019-01-01 2019-02-01 2 2019-02-01二月2日
#>3 2019-01-31 2019-02-28 2019-02-01年2月2日
#>4 2019-02-15 2019-03-15 2019-03-01年3月3日

使用
tidyverse
lubridate
您可以轻松处理和合并两个日期列表:

(data_org <- (tibble(org = ymd(c("2018-12-21", "2019-01-01", "2019-01-31", "2019-02-15"))) %>%
  mutate(month = month(org),
         year = year(org))))

# A tibble: 4 x 3
  org        month  year
  <date>     <dbl> <dbl>
1 2018-12-21    12  2018
2 2019-01-01     1  2019
3 2019-01-31     1  2019
4 2019-02-15     2  2019

(data_fbd <- tibble(fbd = ymd(c("2019-01-02", "2019-02-01", "2019-03-01", "2019-04-01"))) %>%
  mutate(month = month(fbd) - 1, # adapt month to previous month
         year = year(fbd)) %>%
  mutate(year = case_when(month == 0 ~ year - 1, TRUE ~ year), # adjust year to previous year if previous month is 0 (i.e. 12)
         month = case_when(month == 0 ~ 12, TRUE ~ month))) # adjust month to 12 if previous month is 0 (i.e. 12)

# A tibble: 4 x 3
  fbd        month  year
  <date>     <dbl> <dbl>
1 2019-01-02    12  2018
2 2019-02-01     1  2019
3 2019-03-01     2  2019
4 2019-04-01     3  2019

left_join(data_org, data_fbd)
Joining, by = c("month", "year")
# A tibble: 4 x 4
  org        month  year fbd       
  <date>     <dbl> <dbl> <date>    
1 2018-12-21    12  2018 2019-01-02
2 2019-01-01     1  2019 2019-02-01
3 2019-01-31     1  2019 2019-02-01
4 2019-02-15     2  2019 2019-03-01
(数据组织%
变异(月=月(组织),
年=年(组织)))
#一个tibble:4x3
组织月年
1 2018-12-21    12  2018
2 2019-01-01     1  2019
3 2019-01-31     1  2019
4 2019-02-15     2  2019
(数据百分比)
变异(月=月(fbd)-1,#将月调整为前一个月
年份=年份(fbd))%>%
变异(年=案例(当(月==0~年-1,真~年)#如果上个月为0(即12),则将年调整为上一年
月=案例(月==0~12,真~月)#如果上个月为0(即12),则将月调整为12
#一个tibble:4x3
fbd月-年
1 2019-01-02    12  2018
2 2019-02-01     1  2019
3 2019-03-01     2  2019
4 2019-04-01     3  2019
左联接(数据组织、数据fbd)
加入,按=c(“月”、“年”)
#一个tibble:4x4
组织月-年fbd
1 2018-12-21    12  2018 2019-01-02
2 2019-01-01     1  2019 2019-02-01
3 2019-01-31     1  2019 2019-02-01
4 2019-02-15     2  2019 2019-03-01

使用
tidyverse
lubridate
您可以轻松处理和合并两个日期列表:

(data_org <- (tibble(org = ymd(c("2018-12-21", "2019-01-01", "2019-01-31", "2019-02-15"))) %>%
  mutate(month = month(org),
         year = year(org))))

# A tibble: 4 x 3
  org        month  year
  <date>     <dbl> <dbl>
1 2018-12-21    12  2018
2 2019-01-01     1  2019
3 2019-01-31     1  2019
4 2019-02-15     2  2019

(data_fbd <- tibble(fbd = ymd(c("2019-01-02", "2019-02-01", "2019-03-01", "2019-04-01"))) %>%
  mutate(month = month(fbd) - 1, # adapt month to previous month
         year = year(fbd)) %>%
  mutate(year = case_when(month == 0 ~ year - 1, TRUE ~ year), # adjust year to previous year if previous month is 0 (i.e. 12)
         month = case_when(month == 0 ~ 12, TRUE ~ month))) # adjust month to 12 if previous month is 0 (i.e. 12)

# A tibble: 4 x 3
  fbd        month  year
  <date>     <dbl> <dbl>
1 2019-01-02    12  2018
2 2019-02-01     1  2019
3 2019-03-01     2  2019
4 2019-04-01     3  2019

left_join(data_org, data_fbd)
Joining, by = c("month", "year")
# A tibble: 4 x 4
  org        month  year fbd       
  <date>     <dbl> <dbl> <date>    
1 2018-12-21    12  2018 2019-01-02
2 2019-01-01     1  2019 2019-02-01
3 2019-01-31     1  2019 2019-02-01
4 2019-02-15     2  2019 2019-03-01
(数据组织%
变异(月=月(组织),
年=年(组织)))
#一个tibble:4x3
组织月年
1 2018-12-21    12  2018
2 2019-01-01     1  2019
3 2019-01-31     1  2019
4 2019-02-15     2  2019
(数据百分比)
变异(月=月(fbd)-1,#将月调整为前一个月
年份=年份(fbd))%>%
变异(年=案例(当(月==0~年-1,真~年)#如果上个月为0(即12),则将年调整为上一年
月=案例(月==0~12,真~月)#如果上个月为0(即12),则将月调整为12
#一个tibble:4x3
fbd月-年
1 2019-01-02    12  2018
2 2019-02-01     1  2019
3 2019-03-01     2  2019
4 2019-04-01     3  2019
左联接(数据组织、数据fbd)
加入,按=c(“月”、“年”)
#一个tibble:4x4
组织月-年fbd
1 2018-12-21    12  2018 2019-01-02
2 2019-01-01     1  2019 2019-02-01
3 2019-01-31     1  2019 2019-02-01
4 2019-02-15     2  2019 2019-03-01