This question already has answers here:
Convert integer to class Date

(3个答案)


5天前关闭。





我有一个带有10个日期的数据框,我将其读入R作为整数。这是数据帧:

19820509
19550503
20080505
19590505
19940517
19690504
20050420
20060503
19840427
19550513


我们称它为df。

我在这里尝试了几行不同的代码行,以将每个值简单地更改为R中的日期格式,如下所示:"1982-05-09"

df <-  as.Date(df, "%Y%m%d")


不起作用,也不起作用

 df <- as.POSIXlt(df, format = "%Y/%m/%d")


要么

df <- as.POSIXct(df), format = "%Y/%m/%d", origin = "19820509")


我不断收到错误消息,说“不知道如何将'df'转换为类“ date”或POSIX格式中的任何一种。

我认为这会更简单。有任何想法吗?

谢谢。

最佳答案

您必须引用特定的列,而不仅仅是引用数据框。如果包含整数日期的变量位于数据框df中,并且称为x,则可以执行以下操作:

df <- transform(df, x = as.Date(as.character(x), "%Y%m%d"))

#             x
#  1 1982-05-09
#  2 1955-05-03
#  3 2008-05-05
#  4 1959-05-05
#  5 1994-05-17
#  6 1969-05-04
#  7 2005-04-20
#  8 2006-05-03
#  9 1984-04-27
# 10 1955-05-13


这会将整数转换为字符串,然后将字符串解释为日期。

如果包含此格式的日期的多列,则可以一次转换,但必须做些微的不同:

df <- data.frame(lapply(df, function(x) as.Date(as.character(x), "%Y%m%d")))


甚至更好,正如docendo discimus在评论中提到的那样:

df[] <- lapply(df, function(x) as.Date(as.character(x), "%Y%m%d"))

关于r - 迄今R中的整数数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29928195/

10-13 07:24
查看更多