Versuchen:
v <- c("October 1, 2014", "June 14, 2014")
as.Date(v, "%B %d,%Y")
Welche gibt:
#[1] "2014-10-01" "2014-06-14"
Oder
strptime(v, "%B %d,%Y")
Welche gibt:
#[1] "2014-10-01 EDT" "2014-06-14 EDT"
Benchmark
largev <- rep(v, 10e5)
library(microbenchmark)
microbenchmark(
as.Date = as.Date(largev, "%B %d,%Y"),
strptime = strptime(largev, "%B %d,%Y"),
times = 10
)
Welche gibt:
#Unit: seconds
# expr min lq mean median uq max neval cld
# as.Date 1.479891 1.480671 1.527838 1.483158 1.489222 1.863777 10 a
# strptime 2.177625 2.183247 2.237732 2.255282 2.268452 2.272537 10 b
Per erwähnt durch @cory in den Kommentaren, verwenden ?strptime
die Formatcodes zu erhalten:
- % B Vollständiger Monatsname im aktuellen Gebietsschema. (Entspricht auch dem abgekürzten Namen bei der Eingabe.)
- % d Tag des Monats als Dezimalzahl (01-31).
- % Y Jahr mit Jahrhundert. Beachten Sie, dass während es keine Null in dem ursprünglichen gregorianischen Kalender war, ISO 8601: 2004 definiert sie gültig zu sein (interpretiert als 1BC)
Verwenden 'strptime' die Formatcodes zu erhalten. – cory