簡體   English   中英

結合日、月、年、小時到R中的日期時間

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

如果您不想查看時區信息,只需將ISOdateas.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM