22

我遇到了一个我不明白的问题,我无法在这个网站上找到这个问题的答案(我一直在寻找关于如何将日期转换为数字或反之亦然的答案,但这正是我不想知道)。

问题是当您将它们分配给矩阵或数据框时,R 会将格式化为日期的值(例如“20-09-1992”)转换为数值。例如,我们有日期格式的“20-09-1992”,我们使用class().

as.Date("20-09-1992", format = "%d-%m-%Y")
class(as.Date("20-09-1992", format = "%d-%m-%Y"))

我们现在将此值分配给一个矩阵,想象中称为 Matrix:

Matrix <- matrix(NA,1,1)
Matrix[1,1] <- as.Date("20-09-1992", format = "%d-%m-%Y")
Matrix[1,1]
class(Matrix[1,1])

突然之间,之前格式化为“20-09-1992”的日期变成了一个值为 8298 的数字。我不想要一个值为 8298 的数字,我想要一个日期格式为“20-09-1992”的日期.

所以我想知道这是否只是 R 的工作方式,我们不允许为矩阵和数据框分配日期(不知何故,我设法在其他矩阵/数据框中有日期,但它让我觉得为什么其他时间不同)? 是否有一种特殊的方法可以为我错过的数据框和矩阵分配日期,并且未能从以前(以某种方式成功)为数据框/矩阵分配日期的尝试中推断出?

4

3 回答 3

7

我认为您不能将日期存储在矩阵中。使用数据框或数据表。如果必须将日期存储在矩阵中,则可以使用列表矩阵。

Matrix <- matrix(NA,1,1)
Matrix[1,1] <- as.list(as.Date("20-09-1992", format = "%d-%m-%Y"),1)
Matrix
[[1]]
[1] "1992-09-20"

已编辑:我也刚刚重新阅读了您对数据框有此问题。我不确定为什么。

mydate<-as.Date("20-09-1992", format = "%d-%m-%Y")
mydf<-data.frame(mydate)
mydf

      mydate
1 1992-09-20

编辑:这对我来说是 R 和日期的学习经历。显然,您提供的日期已转换为自起源以来的天数。原产地定义为 1970 年 1 月 1 日。在某个时候将其转换回日期格式

Matrix
     [,1]
[1,] 8298

as.Date(Matrix, origin ="1970-01-01")
[1] "1992-09-20" 
于 2017-01-17T13:08:38.273 回答
6

尝试以下操作:首先指定您的日期向量,然后使用

rownames(mat) <- as.character(date_vector)

日期将显示为文本。

于 2017-12-01T12:49:55.603 回答
-1

这主要发生在我们加载 Excel 工作簿时

您需要detectDates = TRUE在函数中添加

DataFrame <- read.xlsx("File_Nmae", sheet = 3, detectDates = TRUE)
于 2021-09-14T09:48:54.453 回答