Lubridate: Eine ym()-Funktion für Jahr-Monat-"Datum" im Geiste von yq() hinzufügen?

Erstellt am 29. Jan. 2018  ·  27Kommentare  ·  Quelle: tidyverse/lubridate

Da lubridate bereits eine praktische yq() Funktion zum Analysieren von Jahr-Quartal-"Datumsangaben" hat, würden Sie in Betracht ziehen, ym() hinzuzufügen, das Äquivalent für numerische Jahr-Monat-"Datumsangaben"?

In den angewandten Wissenschaften tauchen solche Daten immer wieder auf, wenn das genaue Datum der Probenahme nicht erfasst oder notwendig ist oder die Daten zu einem monatlichen Zeitschritt, zB monatlichen Klimaanomalien, aggregiert und in diesem Format (dh ohne Tageskomponente).

parse_date_time weiß mit solchen Eingaben umzugehen

> parse_date_time("10/2001", "mY")
[1] "2001-10-01 UTC"

Ich denke an etwas in der Art von (ich bin neu beim Schmieren, also bin ich mir nicht sicher, ob ich der Bedeutung des Arguments orders gerade noch folge):

ym <- function (..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME")) {
  lubridate:::.parse_xxx(..., orders = "ym", quiet = quiet, tz = tz, locale = locale, 
                    truncated = 0)
}

my <- function (..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME")) {
  lubridate:::.parse_xxx(..., orders = "my", quiet = quiet, tz = tz, locale = locale, 
                    truncated = 0)
}

mit erwarteter Leistung

> my("10-2001")
[1] "2001-10-01"
> ym("2010-10")
[1] "2010-10-01"

Optional würde das Akzeptieren eines Arguments fraction (oder gleichwertig) es dem Benutzer ermöglichen, den hinzugefügten Tagesteil zu steuern: würde date + days(fraction * days_in_month) ?

Hilfreichster Kommentar

Ich werde es bald hinzufügen.

Alle 27 Kommentare

Ich glaube nicht, dass diese Funktionen so nützlich sind, insbesondere weil die Semantik von my und ym für einen gelegentlichen Leser wahrscheinlich nicht klar ist. Außerdem würde man yd , md usw. für die Konsistenz benötigen.

Sie können ein solches partielles Parsing bereits auf verschiedene Arten durchführen:

> ymd("2001-01", truncated = 1)
[1] "2001-01-01"
> myd("01-2001", truncated = 1)
[1] "2001-01-01"
> ymd(paste0("2001-01", "-03"))
[1] "2001-01-03"
> parse_date_time("2001-01", "ym")
[1] "2001-01-01 UTC"
> parse_date_time2("2001-01", "Ym")
[1] "2001-01-01 UTC"

Für den ersten Teil des Tages können x + days(3) oder ceiling_date(x, "3d") usw.

Diese Funktion könnte ich auch nutzen.

Diese Funktion habe ich heute gesucht. Es scheint, als ob alle möglichen Kombinationen von Datumsangaben abgedeckt werden sollten, um die Bibliothek universell nutzbar zu machen.

+1 für diese Funktion. Hässliche Lösungen wie mutate(month = paste0(year(date_col), "-", month(date_col))) schreiben ist unelegant und scheint dem Geist dieses Pakets zu widersprechen.

Ich werfe auch hier meine Stimme für die Unterstützung ab. Derzeit ist auf der Suche nach einer eleganten Möglichkeit, MY schrittweise zu erhöhen, und es ist ein wenig mühsam zu versuchen, es sauber und konsistent mit dem anderen Code zu halten, der Lubridate verwendet.

Dies ist ein wirklich häufiger Anwendungsfall bei unserer Arbeit und wäre eine großartige Ergänzung =)

+1 für diese Funktionsanfrage

Scheint so, als ob floor_date die meisten Anwendungsfälle dafür abdeckt. Zum Beispiel,

dates <- as.Date(c("2019-01-01", "2019-02-20"))
floor_date(dates, "month")

Zugegeben, Sie erhalten Datumsangaben am Ersten eines jeden Monats und keine Datumsangaben ohne Tageskomponente, aber ab diesem Zeitpunkt können Sie alle Standardfunktionen von Lubridate verwenden, um Monate zu addieren oder zu subtrahieren.

Würde diese Funktion auch schätzen, die Workarounds sind weit weniger intuitiv.

Ich werde es bald hinzufügen.

Ich auch

@vspinu Irgendein Update dazu? Gibt es eine Timeline für "bald" ;-)

Das wäre eine tolle Funktion.

Das wäre gut

Ich füge auch meine Stimme hinzu!

Und meine Stimme!

+1

Diese Funktion würde ich auch gerne sehen!

+1

+1

Freue mich auf diese Funktion +1

+1

+1

Wiedereröffnung auf vielfachen Wunsch.

+1

+1

Diese Funktion ist bei CRAN schon lange vorhanden. Verriegelung.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

sebschub picture sebschub  ·  7Kommentare

ClaytonJY picture ClaytonJY  ·  5Kommentare

garrettgman picture garrettgman  ·  7Kommentare

Demetrio92 picture Demetrio92  ·  26Kommentare

Teebusch picture Teebusch  ·  3Kommentare