在R中将年份.十进制形式的日期转换

17

我有一个ts列,保存的是年份的小数格式,例如:

1988.0
1988.25
1988.5
1988.75

等等,我需要将其导出到一个以"DD-MM-YYYY"格式表示日期的 .csv 文件中。

我该如何做?


2
@pjvandehaar - 可能是时间戳? - Rich Scriven
2个回答

26

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()

您可能需要先检查输出,然后根据您想要的格式调整一些参数。


9

为了处理这些年份分数,

> 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'))
> year_length <- year_end - year_beginning
> year_fraction <- date_num %% 1
> date <- year_beginning + year_length * year_fraction
> format(date, format='%Y-%m-%d')
[1] "1988-12-28"

如果要写csv文件,可以尝试使用help(write.table)


1
我其实一直都在尝试编写那样的代码,但总是卡住。我是R语言的新手。这个社区真是太棒了!问题在一天内就解决了!!! - monkeyshines

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接