R将数字转换为时间

标签 r dataframe posixct lubridate

有人在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...

最佳答案

TIMEIN总是六个字符(即上午 10 点之前的时间有一个前导零),那么你可以这样做:

df$TIMEIN = paste0(substr(df$TIMEIN,1,2),":",substr(df$TIMEIN,3,4),":", substr(df$TIMEIN,5,6))
df$TIMEIN = hms(df$TIMEIN)

关于R将数字转换为时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167460/

相关文章:

python - Pandas 在我的数据中按第一天重新采样

python - Pandas 比较两个数据帧

python - 是否有为数据框中的每个条目创建类型的辅助数据框的函数?

r - 将 POSIXct 对象传递给函数返回数值向量

r - 使用which()查找某些posix时间之间的值并在没有数据时填充NA

r - 注释树状图节点上的距离

r - 如何根据另一个数据表创建一个数据表,其中一行填充 NA

r - 使用因子将 ggplot 中的标签拆分为 2 行

r - 将自定义颜色渐变映射到 POSIXct 值

r - 如何从 R data.frame 获取行