有人在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...
3 回答
如果
TIMEIN
总是六个字符(即在上午10点之前有一个前导零),那么你可以这样做:你也可以尝试这个来获得指定的时间,但是你也必须摆脱日期 .
Edit- 好的,
as.POSIXct()
适用于日期和时间 . 因此,要将整体合并为一个,您可以执行类似的操作 .或者比上面的更简单,使用tidyverse中的管道,您可以获得以下内容: