İki tarih arasındaki iş günlerinin sayısını hesaplamak için bizdays
paketini kullanarak hesaplamaya çalışıyorum. İki tarih arasında iş günlerini hesaplamak için kullanmak için iyi bir seçenek olduğu, ancak bunu kullanırken belirli konularda herhangi bir gönderi olmadığı konusunda pek çok yayın vardır. Şu anda çıktıyla ilgili bir sorun yaşıyorum.Bizdays işlevi yanlış değerler döndürüyor
Saniyelerimden aylara kadar olan tarihler arasındaki farklara sahip verilerim var, ancak örneklemde df'nin altında, yalnızca bir günden daha az olan farklılıkları göstereceğim (bunlar sorunun ortaya çıktığı yerlerdir).
Transition_Dates <- data.frame(Enter = as.POSIXct(c("2015-06-28 19:48:00",
"2015-06-14 04:05:00",
"2013-11-21 04:56:59",
"2016-01-16 11:18:00",
"2015-12-19 14:02:59")),
Exit = as.POSIXct(c("2015-06-28 19:48:59",
"2015-06-14 04:06:59",
"2013-11-21 10:24:00",
"2016-01-18 06:21:00",
"2015-12-19 14:11:00")),
Time_in_State = c(0.00, 0.00, 0.23, 1.79, 0.01))
Gördüğünüz gibi, (bizdays
çıkışına aşağıda karşılaştırmak için iyi) olmayan iş günü çıkarmadan OLMADAN bir hesaplama olan bir üçüncü sütun vardır:
İşte benim df olduğunu.
Transition_Dates$bdays <- bizdays(Transition_Dates$Enter, Transition_Dates$Exit)
Transition_Dates
Enter Exit Time_in_State bdays
1 2015-06-28 19:48:00 2015-06-28 19:48:59 0.00 -1
2 2015-06-14 04:05:00 2015-06-14 04:06:59 0.00 -1
3 2013-11-21 04:56:59 2013-11-21 10:24:00 0.23 -1
4 2016-01-16 11:18:00 2016-01-18 06:21:00 1.79 -1
5 2015-12-19 14:02:59 2015-12-19 14:11:00 0.01 -1
kimse benzer bir sorun rastlamak Has veya tamamen eksik bir şey duyuyorum:
library(bizdays)
library(lubridate)
Non_Working_Calendar <- Calendar(holidays = as.Date(c("2013-07-04", "2013-09-02", "2013-10-14", "2013-11-11", "2013-11-21", "2013-11-22", as.character(seq(ymd("2013-12-24"), ymd("2014-01-01"), "days")),
"2014-01-20", "2014-02-17", "2014-05-26", "2014-07-04", "2014-09-01", "2014-10-13", "2014-11-11", "2014-11-27", "2014-11-28", as.character(seq(ymd("2014-12-24"), ymd("2015-01-01"), "days")),
"2015-01-19", "2015-02-16", "2015-05-25", "2015-07-03", "2015-09-07", "2015-10-12", "2015-11-11", "2015-11-26", "2015-11-27", as.character(seq(ymd("2015-12-24"), ymd("2016-01-01"), "days")),
"2016-01-18", "2016-02-15", "2016-05-30", "2016-07-04", "2016-09-05", "2016-10-10", "2016-11-11", "2016-11-24", "2016-11-25", as.character(seq(ymd("2016-12-24"), ymd("2017-01-01"), "days")),
"2017-01-16", "2017-02-20", "2017-05-29", "2017-07-04", "2017-09-04", "2017-10-09", "2017-11-10", "2017-11-23", "2017-11-24", as.character(seq(ymd("2016-12-24"), ymd("2017-01-01"), "days")))), start.date = as.Date("2010-01-01"), end.date = as.Date("2020-01-01"), weekdays = c("saturday", "sunday"))
bizdays.options$set(default.calendar = Non_Working_Calendar)
df için bizdays
çıktı ekleyin: Burada
benim bizdays
takvimdir? Gözlemlerin çoğunda, bdays
sütunu Time_in_State
sütunundan yukarı veya aşağı doğru yuvarlanır, ancak neden bunlardan bazıları için bana -1 vereceğini anlayamadım. Ayrıca, ondalıklı bizdays
çıkışa sahip olmanın bir yolu var mı (ör., 5.5, 12.11)? Kılavuzda hiçbir şey görmedim. Şimdiden çok teşekkür ederim.
Düşünceli yanıt için teşekkür ederiz. Yine başka tarihlerle de bir sorun yaşıyorum. Yukarıdaki takvimi kullanarak: 'bizdays (" 2014-10-10 11:33:00 "," 2014-10-16 10:03:00 ")" 3 iş günü döndürür, ancak 4'e (Cuma 11: 30:00 - Perşembe 10:03. Eğer bizseq ("2014-10-10 11:33:00", "2014-10-16 10:03:00") 'yi çalıştırırsam, 4 günlük bir vektör döndürür. Şimdilik bir çözüm olarak bunu önerir misiniz? Bunu, tarihleri arasındaki bir tarihle birleştirebilir miyim? Denemeyi deneyeceğim. – Tunn
Şimdilik 1'e 'bizdays' dönüşünü eklemeyi öneriyorum. 'bizdays' iki tarih arasındaki farkı, böylece 'bizdays' ("2014-10-10 11:33:00", "2014-10-11 11:33:00") 'i çağırırsanız, 2 yerine 1 döndürür, ancak bizseq ("2014-10-10 11:33:00", "2014-10-11 11:33:00") 'i çağırırsanız, 2 tarih içeren bir sıra döndürür. “bizdays” finansal amaçlar için tasarlandı ve diğer kullanımlar için daha özelleştirilebilir hale getirmenin yeni yollarını düşüneceğim. –
Başarımdaki Columbus Day'ı kaçırdım. İlk cevabın harika çalışıyor. Tekrar teşekkürler. – Tunn