如何在分配给矩阵或数据框时避免将日期格式化的值转换为数字?

时间:2017-01-17 12:45:58

标签: r matrix as.date

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

问题在于,当您将它们分配给矩阵或数据框时,R会将格式化为日期的值(例如“20-09-1992”)转换为数值。 例如,我们有“20-09-1992”的日期格式,我们使用function transitionx(size) { marker.transition() .duration(7500) .ease('quad') .style("fill", "red") .attr("r", size) .each("end", function() { marker.transition() .attr("r", size * 1.2) .duration(3000) .each("end", function() { marker.transition() .attr("r", size / 1.2) .duration(3000) .style("fill", "white") .each("end", transitionx(size)) }) }) } 进行了检查。

class()

我们现在将此值分配给矩阵,富有想象力地称为矩阵:

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

突然之前格式化为“20-09-1992”的日期已成为值为8298的数字。我不想要一个值为8298的数字,我想要一个看起来像“20-09-1992”的日期以日期格式。

所以我想知道这是否只是R的工作方式,我们不允许为矩阵和数据帧分配日期(不知怎的,我已经设法在其他矩阵/数据帧中设置日期,但它打败了我为什么那些其他时代不同)?是否有一种特殊的方法可以将数据帧和矩阵分配给我错过的数据框和矩阵,并且无法从之前(某种程度上成功的)尝试将日期分配给数据框/矩阵中进行推断?

2 个答案:

答案 0 :(得分:6)

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

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和约会的学习经历。显然,您提供的日期被转换为原始日期。 Origin定义为1970年1月1日。要在某些时候将其转换回日期格式

Matrix
     [,1]
[1,] 8298

as.Date(Matrix, origin ="1970-01-01")
[1] "1992-09-20" 

答案 1 :(得分:2)

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

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

日期将显示为文字。