Преобразование даты в Year.decimal в R

У меня есть столбец ts, который экономит годы в десятичном формате, т.е.

1988.0
1988.25
1988.5
1988.75

и т.д. Мне нужно экспортировать его в CSV файл с датой в формате "DD-MM-YYYY".

Как это сделать?

Ответ 1

В пакете lubridate есть функция date_decimal, которую вы можете использовать для этого.

x <- c(1988.0, 1988.25, 1988.5, 1988.75)
library(lubridate)
(f <- format(date_decimal(x), "%d-%m-%Y"))
# [1] "01-01-1988" "01-04-1988" "02-07-1988" "01-10-1988"

Затем вы можете записать его в csv с помощью

write.csv(f, "afilename.csv")   ## or write.table()

Вы, вероятно, захотите сначала проверить выход и скорректировать некоторые аргументы в любом формате.

Ответ 2

Чтобы справиться с этими годами,

> date_string <- '1988.99'
> date_num <- as.numeric(date_string)
> year <- floor(date_num)
> year_beginning <- as.POSIXct(paste0(year, '-01-01'))
> year_end <- as.POSIXct(paste0(year+1, '-01-01'))
> date <- year_beginning + (date_num %% 1) * (year_end - year_beginning)
> format(date, format='%Y-%m-%d')
[1] "1988-12-28"

Для написания csv попробуйте help(write.table)