[英]Combine day,month,year,hour to date time in R
day month year hour
01 05 2017 00
05 12 2017 01
10 07 2017 23
我现在没有分和秒列 我正在尝试以以下格式获取单个变量作为 date_time
2017-05-01 00:00:00
2017-12-05 01:00:00
2017-07-10 23:00:00
使用以下代码时出现错误
df$date <- as.Date(with(df, paste(year, month, day,hour,sep="-")),
"%Y-%m-%d %H:%M:%S")
提前致谢
我们可以尝试将列与sprintf
paste
在一起,然后使用as.POSIXct
转换为datetime。
as.POSIXct(do.call(sprintf, c(df1, fmt = c("%02d-%02d-%4d %02d"))), format = "%d-%m-%Y %H")
#[1] "2017-05-01 00:00:00 IST" "2017-12-05 01:00:00 IST" "2017-07-10 23:00:00 IST"
或使用lubridate
library(lubridate)
with(df1, ymd_h(paste(year, month, day, hour, sep= ' ')))
由于年,月,日,小时存储在不同的列中,为什么不只使用ISOdate
函数呢? 例如:
> ISOdate("2017","12", "05", "01")
[1] "2017-12-05 01:00:00 GMT"
如果您不想查看时区信息,只需将ISOdate
与as.Date
包装as.Date
> as.Date(ISOdate("2017","12", "05", "01"))
[1] "2017-12-05"
但这会将对象的类别从POSIXct更改为Date,并且(如果我错了,请更正我)并不能真正删除时区信息。
这是在另一个问题中讨论的。 如何在R中的年,月,日和日期之间双向转换?
您可以直接执行此操作而无需使用lubridate
制作字符串。
library(lubridate)
df1 %>%
mutate(date = make_datetime(year, month, day, hour))
这可能比使用字符串解析更可靠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.