[英]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.