R语言 如何将数字转换为日期?

xkrw2x1b  于 2023-10-13  发布在  其他
关注(0)|答案(4)|浏览(83)

我有一个问题与as.date函数。我有一个列表的正常日期显示在excel中,但当我导入它在R,它变成数字,如33584。我知道从某一天开始算。我想把我的日期设定为“dd-mm-yy”。
原始数据为:how the "date" variable looks like in r
我试过:

as.date <- function(x, origin = getOption(date.origin)){
  origin <- ifelse(is.null(origin), "1900-01-01", origin)
  as.Date(date, origin)
}

还有as.Date(43324, origin = "1900-01-01"),但都不起作用。它显示错误:我不知道如何将“.”转换为类“Date”
谢谢你们!

cx6n0qe3

cx6n0qe31#

janitor包有两个函数,用于在R中处理阅读Excel日期。有关使用示例,请参阅以下链接:

janitor::excel_numeric_to_date(43324)
[1] "2018-08-12"
vyu0f0g1

vyu0f0g12#

我遇到过用readxl::read_xls()读入的excel工作表,它将日期列读入为字符串,如“43488”(特别是当其他地方有一个单元格具有非日期值时)。我用

xldate<- function(x) {
  xn <- as.numeric(x)
  x <- as.Date(xn, origin="1899-12-30")
}

d <- data.frame(date=c("43488"))
d$actual_date <- xldate(d$date)
print(d$actual_date)
# [1] "2019-01-23"
a1o7rhls

a1o7rhls3#

约会是出了名的烦人。我强烈推荐lubridate包来处理它们。https://lubridate.tidyverse.org/
如果需要,使用as_date()lubridate读取数字日期。
你可以使用format()把它放在dd-mm-yy中。

library(lubridate)

date_vector <- as_date(c(33584, 33585), origin = lubridate::origin)

formatted_date_vector <- format(date_vector, "%d-%m-%y")
7eumitmz

7eumitmz4#

您可以使用openxlsx包中的convertToDateTime函数,该包也是一个用于导入和导出嵌套框架的伟大包。

convertToDateTime(43324, origin = "1900-01-01")

如果您的日期没有意义,请尝试更改origin。有几个不同的日期,如"1970-01-01", "1899-12-30"等。

相关问题