2016-11-18 3 views
0

Ist es möglich, die N-te Geschäftswoche des Monats zu bekommen? Derzeit habe ich den folgenden Code, aber es berücksichtigt Wochenenden. Wenn wir zum Beispiel das Datum 2016-10-10 angeben, ergibt dies 3 als aktuelle Woche des Monats. In Wirklichkeit ist dies tatsächlich die zweite Geschäftswoche des Monats.Nth Business Woche des Monats

wk <- function(x) as.numeric(format(x, "%U")); 
cur.wom = wk(d) - wk(as.Date(cut(d, "month"))) + 1 
+0

Vielleicht möchten Sie "Business Week" genauer definieren, damit wir genau wissen, was Sie meinen. – thelatemail

+0

wochentage .... keine wochenenden – user1234440

+0

Also ist 5 Arbeitstage eine Geschäftswoche? Oder signalisiert jeder Montag unabhängig von den Tagen eine neue Geschäftswoche? – thelatemail

Antwort

1

Ich konnte nicht von der Frage sagen, wie Sie am Wochenende behandelt wollen so der folgende Code sollte für Montag bis Freitag arbeiten, aber am Wochenende nicht gehen, wie Sie möchten. Das erste, was Sie tun sollten, um den Wert zu einem POSXlt Objekt konvertieren, da diese Informationen über Dinge wie Tag der Woche in gebaut haben.

myDate <- as.POSIXlt("2016-10-10", format = "%Y-%m-%d") 

Sie müssen die format Zeichenfolge für das Datum ändern kann, da sie nicht eindeutig aus ist Ihr Beispiel, wenn das Format Jahr-Monat-Tag oder Jahr-Tag-Monat ist.

Wir können dann die folgende Gleichung verwenden, um Ihren Geschäftswochenwert zu erhalten.

(myDate$mday - myDate$wday + 4) %/% 7 + 1 

Das mday Feld enthält den Tag des Monats für das Datum und wday enthält einen numerischen Wert, den Tag der Woche angibt (bei 0 beginnt am Sonntag). Durch Subtrahieren wday von mday erhalten wir die gleiche Nummer für jeden Tag innerhalb der gleichen Woche. Die %/% 7 macht eine Integer-Division, die die Dinge in Wochen aufteilen wird. Die + 4 stellt den Wert für jede Woche so ein, dass, wenn die %/% 7 angewendet wird, wird die Woche angezeigt, die Sie wollen, egal an welchem ​​Wochentag der Monat beginnt. Die endgültige + 1 konvertiert nur die Daten, so dass die Couldint von Wochen bei 1 statt 0 beginnt.

Verwandte Themen