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