2

特定の月の最初の営業日を知る必要があります。関連する関数を含む R のパッケージはありますか?

4

3 に答える 3

8

timeDateパッケージには、ここで役立つ関数がisBizdayあります。オブジェクトを他の形式に変換するためのより洗練された方法がありますがdateTime、少なくともこれで始めることができます。

library(timeDate)

## Example data
dates <- as.Date("2013-01-01") + 0:364
Dates <- as.timeDate(dates)

## Extract the first business day of each month
bizDates <- dates[isBizday(Dates, holidays=holidayLONDON())]
firsts <- tapply(bizDates, months(bizDates), min)
sapply(firsts, function(X) as.character(as.Date(X)))
#            1            2            3            4            5            6 
# "2013-01-02" "2013-02-01" "2013-03-01" "2013-04-01" "2013-05-01" "2013-06-03" 
#            7            8            9           10           11           12 
# "2013-07-01" "2013-08-01" "2013-09-03" "2013-10-01" "2013-11-01" "2013-12-02" 
于 2013-03-18T14:12:16.477 に答える
6

isBusinessDay fromを使用できますRQuantLib。これは、カレンダーが与えられた日が忙しい日かどうかをチェックします。1つのアイデアは、月の最初の日を与え、最小の繁忙日を取ることです

たとえば、2009 年 4 月の最初の営業日は次のとおりです。

library(RQuantLib)
dates <- seq(from=as.Date("2009-04-01"), to=as.Date("2009-04-05"), by=1)
min(dates[isBusinessDay("UnitedKingdom", dates)])
"2009-04-01"
于 2013-03-18T14:13:21.910 に答える
6

土曜日または日曜日ではない月の最初の日が必要であると仮定します。

businessDay<-function(month,year){
  #3 first dates of the month is sufficient
  d <- as.POSIXlt(paste(year,month,1:3,sep="-")) 
  #POSIXlt object contains the info about the weekday as number 0-6 (starting Sunday)
  d[which(d$wday>0 & d$wday<6)[1]]
}

businessDay(3,2013)
[1] "2013-03-01"

または、その日の名前が必要な場合:

businessDay<-function(month,year){
  d <- as.POSIXlt(paste(year,month,1:3,sep="-"))
  weekdays(d[which(d$wday>0 & d$wday<6)[1]])
}

businessDay(1,2013)
[1] "friday"
于 2013-03-18T14:07:23.550 に答える