Zähle die Anzahl der Freitage oder Montagen im Monat in R

8

Ich möchte eine Funktion, die die Anzahl der spezifischen Tage pro Monat zählt.

i.d. Nov. 13 - & gt; 5 Freitage .. während Dez'13 würde 4 Freitage zurückkehren ..

Gibt es eine elegante Funktion, die das zurückgibt?

%Vor%

Was wäre ein besserer Weg, dies zu tun?

    
vinchinzu 11.11.2013, 18:27
quelle

3 Antworten

10

1) Hier ist d die Eingabe, ein Date -Klassenobjekt, z. %Code%. Das Ergebnis gibt die Anzahl der Freitage im Jahr / Monat an, die d <- Sys.Date() enthält. Ersetzen Sie 5 durch 1, um die Anzahl der Montage zu erhalten:

%Vor%

2) Ersetzen Sie alternativ die letzte Zeile durch die folgende Zeile. Hier ist der erste Term die Anzahl der Freitage von der Epoche bis zum nächsten Freitag am oder nach dem ersten des nächsten Monats und die zweite Periode ist die Anzahl der Freitage von der Epoche bis zum nächsten Freitag auf oder nach der ersten von d 's Monat. Auch hier ersetzen wir alle 5 durch 1, um die Anzahl der montags zu erhalten.

%Vor%

Die zweite Lösung ist etwas länger (obwohl sie die gleiche Anzahl von Zeilen hat), aber sie hat den Vorteil, vektorisiert zu werden, d.h. d könnte ein Vektor von Daten sein.

UPDATE: Zweite Lösung hinzugefügt.

    
G. Grothendieck 11.11.2013, 18:59
quelle
2

Es gibt eine Reihe von Möglichkeiten, dies zu tun. Hier ist eins:

%Vor%

Es schafft den ersten der Monate und einen Tag in den nächsten Monaten.

Er erstellt dann einen Datenrahmen des Monatsindex (in einem Bereich von 0 bis 11, aber wir verwenden diesen nur zum Vergleich) und Wochentag.

Wir unterteilen uns dann zu a) im selben Monat und b) an einem Freitag. Das ist dein Ergebnis und Wir geben die Anzahl der Zeilen als Antwort zurück.

Beachten Sie, dass dies nur Basis-R-Code verwendet.

    
Dirk Eddelbuettel 11.11.2013 18:44
quelle
2

Ohne lubridate -

zu verwenden %Vor%     
TheComeOnMan 11.11.2013 18:48
quelle

Tags und Links