R中迄今为止的整数数据帧

use*_*887 9 r

我有一个包含10个日期的数据框,我将其作为整数读入R中.这是数据框:

19820509
19550503
20080505
19590505
19940517
19690504
20050420
20060503
19840427
19550513
Run Code Online (Sandbox Code Playgroud)

我们称之为df.

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

df <-  as.Date(df, "%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

不起作用,也不起作用

 df <- as.POSIXlt(df, format = "%Y/%m/%d")
Run Code Online (Sandbox Code Playgroud)

要么

df <- as.POSIXct(df), format = "%Y/%m/%d", origin = "19820509")
Run Code Online (Sandbox Code Playgroud)

我一直收到一条错误,上面写着"不知道如何将'df'转换为类"date"或任何一种POSIX格式.

我觉得这会更简单.有任何想法吗?

谢谢.

Ale*_* A. 10

您必须引用特定列而不是仅引用数据框.如果包含整数日期的变量位于数据框中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
Run Code Online (Sandbox Code Playgroud)

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

如果你有多个列包含这种格式的日期,你可以一举转换它们,但你必须略有不同:

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

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

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


Sab*_*DeM 5

这是我的解决方案,它需要lubridate包.您可以ymdlubridate包的功能用作"替换功能".只需选择要转换的列,然后将其替换为ymd版本.

 library(lubridate)
 data[ , 1 ] <- ymd(data[, 1])
Run Code Online (Sandbox Code Playgroud)

这个包提供了更多的功能来解析数据或字符串到日期,ymd(y =年,m =月,d =天)都使用这个简单的方案.