如何避免日期格式化值在分配给矩阵或数据框时转换为数字?
我遇到了一个我不明白的问题,我一直无法在这个网站上找到这个问题的答案(我一直在回答关于如何将日期转换为数字或反之亦然,但这正是我不想知道的)。如何避免日期格式化值在分配给矩阵或数据框时转换为数字?
问题在于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(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是如何工作的,我们不允许将日期分配给矩阵和数据帧(不知何故,我已经设法在其他矩阵/数据帧中有日期,但它使我为什么跳动其他时间是不同的)?是否有一种特殊的方法将日期分配给数据框架和矩阵,这些数据框架和矩阵是我错过的,并且未能从以前(某种程度上成功的)尝试向数据框/矩阵分配日期时推论出来?
我不认为你可以将日期存储在矩阵中。使用数据框或数据表。如果您必须将日期存储在矩阵中,则可以使用列表矩阵。
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"
非常感谢! 我发现了一个解决方法(将日期存储为字符,然后在调用循环或函数中的字符时将其格式更改为as.date),lubridate听起来就像我需要做的更简单! 所以,再次,谢谢! –
谢谢@DavidArenburg。我相应地编辑了帖子! – akaDrHouse
尝试以下方法:一是指定日期矢量&然后用
rownames(mat) <- as.character(date_vector)
日期将显示为文本。
R中的“矩阵”从输入向量中条纹化所有属性。这在'?matrix'中有记录:“*一个可选的数据向量(包括一个列表或表达式向量)。非原子分类的R对象被as.vector强制转换,并丢弃所有的属性。如果你要运行'attributes(as.Date(“20-09-1992”,format =“%d-%m-%Y”))''你会发现'class'是一个属性。当类被剥离时,'Date'向量就回到它的存储模式,即storage.mode(as.Date(“20-09-1992”,format =“%d-%m-%Y” ))'。另见'unclass(as.Date(“20-09-1992”,format =“%d-%m-%Y”))' –
谢谢!也为其他评论! –