Fehle ich etwas? Ich kann nicht herausfinden, wie die folgenden Date
s zu konvertieren:Format für Ordinaldaten?
ord_dates <- c("September 1st, 2016", "September 2nd, 2016",
"September 3rd, 2016", "September 4th, 2016")
?strptime
keine Abkürzung für die Ordnungs Suffix Liste angezeigt wird, und es wird nicht automatisch behandelt:
as.Date(ord_dates, format = c("%B %d, %Y"))
#[1] NA NA NA NA
Gibt es ein Token für die Behandlung von ignorierten Zeichen im format
Argument? Ein Token fehlt mir?
Best I mit oben kommen kann ist (es kann eine kürzere regex, aber die gleiche Idee):
as.Date(gsub("([0-9]+)(st|nd|rd|th)", "\\1", ord_dates), format = "%B %d, %Y")
# [1] "2016-09-01" "2016-09-02" "2016-09-03" "2016-09-04"
wie diese Art von Daten scheinen sollte relativ häufig sein; Fehle ich etwas? Genießen Sie
Hier ist eine kürzere Regex: 'as.Date (sub (" ([0-9] +). *, "," \\ 1 ", ord_dates), Format = c ("% B% d% Y ")) ' – Frank
@Frank ist' sub' schneller als 'gsub' übrigens? Ich stelle mir das so vor ... – MichaelChirico
Hm, ich bin kein Regex-Experte, aber ich denke, es sollte sein, wenn Strings lang sind und das erste Match früh in der Zeichenfolge ist (so muss es den Rest nicht durchlaufen). – Frank