【发布时间】:2015-07-01 16:59:47
【问题描述】:
有人在 Excel 中给了我非常糟糕的数据,其中日期(例如 2015 年 7 月 1 日)是 20150701,时间(例如 11:41:23)是 114123。有超过 50,000 行数据,我需要将这些都转换为适当的日期和时间对象。这些不是任何纪元的秒数,它只是没有破折号或冒号的日期或时间。
我将它们导入数据框并使用 ymd() 函数转换日期,但我找不到用于时间的函数,hms() 给我一个错误:
package(lubridate)
df <- readWorksheetFromFile(file="cktime2012.xls", sheet=1)
df$date <- ymd(df$date)
df$time <- hms(df$time)
# Warning message:
# In .parse_hms(..., order = "HM", quiet = quiet) :
# Some strings failed to parse
在运行最后一行之前,我得到了一个看起来像这样的数据框。一旦我运行最后一行,TIMEIN 列就会变成所有 NA:
DATEIN TIMEIN etc...
2012-02-01 200000 etc...
etc...
我需要它在所有 50,000 行中看起来像这样。我将 POSIXct 作为标签包含在内,因为我不知道是否有办法使用它来帮助转换:
DATEIN TIMEIN etc...
2012-02-01 20:00:00 etc...
etc...
【问题讨论】:
-
如果您真正想要做的是将日期和时间以
POSIXct格式放在一个列中,那么您应该将DATEIN和TIMEIN粘贴在一起并转换为POSIXct (使用任何答案来获得正确的格式)。
标签: r dataframe posixct lubridate