1) chron Поскольку ввод не был указан воспроизводимо, мы предполагаем, что:
Dates <- c("2018-06-07", "2017-03-01", "2015-11-30")
, в этом случае это будет работать - вы можете опустить часть [...]
, если столбецпорядок не имеет значения:
library(chron)
do.call("cbind", month.day.year(Dates)[c("year", "month", "day")])
с указанием этой матрицы (используйте data.frame
вместо cbind
, если вы хотите кадр данных):
year month day
[1,] 2018 6 7
[2,] 2017 3 1
[3,] 2015 11 30
Приведенный выше код также будетработать, если Даты имеют класс "Date"
.
2) формат (базовый)
DatestoNum <- function(fmt) as.numeric(format(as.Date(Dates), fmt))
sapply(c(year = "%Y", month = "%m", day = "%d"), DatestoNum)
, дающий тот же результат.Это также будет работать, если Dates
класса "Date"
.В этом случае вы можете удалить as.Date
.Используйте as.data.frame
для результата, если вы предпочитаете результат с фреймом данных.
2a) Поочередно запишите его:
cbind(year = DatestoNum("%Y"), month = DatestoNum("%m"), day = DatestoNum("%d"))
3) lubridate
library(lubridate)
cbind(year = year(Dates), month = month(Dates), day = day(Dates))
4) read.table (base)
read.table(text = format(Dates), sep = "-", col.names = c("year", "month", "day"))
Если Dates
уже является символом, вы можете опционально опустить format
.