在R中的Excel日期转换问题

9 浏览
0 Comments

在R中的Excel日期转换问题

在从R中绘制Excel数据并转换为R中的日期时遇到问题。我有一个“time_period”列,在Excel中以5位数(例如41640)的Excel日期格式中提取。这些数字最初以chr格式存在,所以我用以下代码将它们转换为数值类型:

all[,3] <- lapply(all[,3], function(x) as.numeric(as.character(x)))

完成后,我运行以下代码格式化日期:

all$time_period <- format(as.Date(all$time_period, "1899-12-30"), "%Y-%m-%d")

然而,一旦完成此操作,time_period列中的所有日期都相同(可能是列中的第一个日期)。

> head(all$time_period)
[1] "2014-01-01" "2014-01-01" "2014-01-01" "2014-01-01" "2014-01-01" "2014-01-01" 

有什么建议吗?提前感谢。

0
0 Comments

Excel Date Conversion Issue in R

在R中,Excel日期转换问题是一个常见的问题。这个问题的原因是,Excel在不同的机器上创建的日期的起点不同。在R中,我们可以使用`as.Date()`函数来将Excel日期转换为R中的日期格式。但是,如果我们不指定日期的起点,R会默认使用"1970-01-01"作为起点,这就导致了日期转换错误的问题。

解决这个问题的方法是,在`as.Date()`函数中使用`origin`参数来指定日期的起点。具体的操作如下:

- 如果Excel文件是在Windows机器上创建的,起点应该是"1899-12-30"。我们可以使用以下代码进行转换:

as.Date(my_date, origin = "1899-12-30")

- 如果Excel文件是在Mac上创建的,起点应该是"1904-01-01"。我们可以使用以下代码进行转换:

as.Date(my_date, origin = "1904-01-01")

下面是一个示例,展示了如何使用`as.Date()`函数进行日期转换:

x <- c("41640","41671","41699","41730","41760","41791")
x <- as.numeric(x)
format(as.Date(x, "1899-12-30"), "%Y-%m-%d")

运行以上代码,将得到如下结果:

[1] "2014-01-01" "2014-02-01" "2014-03-01" "2014-04-01" "2014-05-01" "2014-06-01"

对于不了解"1899-12-30"是什么意思的人来说,它实际上是Windows机器上Microsoft Excel日期的起点。如果使用的是Mac机器,起点应该是"1904-01-01"。重要的是要注意,起点是指文件创建的机器,而不是你读取文件的机器。例如,一个在Windows上创建的Excel文件,在Mac上使用R打开时,应该指定`origin = "1899-12-30"`。

总结起来,解决Excel日期转换问题的关键是指定正确的日期起点。通过在`as.Date()`函数中使用`origin`参数,我们可以根据Excel文件创建的机器来指定起点,从而正确地将Excel日期转换为R中的日期格式。

0
0 Comments

Excel Date Conversion Issue in R

在使用R进行Excel日期转换时,可能会遇到一些问题。下面的内容将介绍出现这个问题的原因以及解决方法。

问题原因:

问题出现的原因是因为Excel中的日期存储方式与R中的日期存储方式不同。在Excel中,日期以序列号的形式存储,从"1899-12-30"开始,每过一天序列号加1。而在R中,默认的日期格式是"%Y-%m-%d"。

解决方法:

为了解决这个问题,我们可以使用R中的as.Date函数来进行日期转换。不需要进行额外的格式化,因为as.Date函数的默认格式是"%Y-%m-%d"。

代码示例:

下面的一行代码可以解决这个问题:

time_period = c("41640", "41671", "41699", "41730", "41760", "41791")
as.Date(as.numeric(time_period), origin =  "1899-12-30")

这段代码将把Excel中的日期转换为R中的日期格式。其中,time_period是Excel中的日期序列号,as.numeric函数将其转换为数值类型,origin参数指定了Excel中的起始日期"1899-12-30"。通过这个代码,我们可以将Excel中的日期转换为R中的日期格式,进而进行后续的分析和处理。

通过以上的解决方法,我们可以很方便地解决在R中进行Excel日期转换时可能遇到的问题。只需要使用as.Date函数,并设置好origin参数,就可以将Excel中的日期转换为R中的日期格式,方便后续的数据分析和处理。

0