将 yyyy-mm-dd HH:MM 字符转换为 R 中的日期 (ymd) 和小时和分钟 (hm) 格式

问题描述 投票:0回答:0

我有一个超过 100 万行的 csv。这是每日天气数据,同一天每 6 小时 UTC,格式为 yyyy-mm-dd HH:MM。

我想创建一个单独的列,其中包含日期格式为 yyyy-mm-dd 的当天

date_ymd
和时间格式为 HH:mm 的单独列
hour_UTC

我的目标是能够用这个

hour_UTC
列添加和减去时间,所以我希望它有一个时间格式而不是一个字符。

我尝试使用 Posixct 和 lubridate 执行操作,但没有成功,在

hour_UTC
列中返回 NAs。

df<-structure(list(regiao = c(7L, 15L, 4L, 3L, 15L, 8L, 9L, 18L, 
15L, 7L, 14L, 13L, 9L, 1L, 6L), date_edit = c("2002-11-02 12:00", 
"2012-10-15 18:00", "2009-10-20 18:00", "1996-10-13 00:00", "1997-09-18 06:00", 
"2010-08-20 00:00", "1993-09-05 12:00", "1999-11-20 12:00", "1990-03-01 00:00", 
"2003-12-23 12:00", "1991-01-23 18:00", "1994-02-16 18:00", "2018-10-18 12:00", 
"2003-03-15 06:00", "2007-12-09 18:00"), mean = c(297.799987792969, 
301.003334424175, 298.758956947398, 299.499620090601, 298.328689034104, 
305.724042300979, 298.741031707088, 295.561164916551, 296.31868576158, 
297.5, 300.400186586472, 300.891081546832, 301.566059015974, 
296.400024414062, 301.456544724043)), class = "data.frame", row.names = c(NA, 
-15L))

df2<-df%>%
  mutate(datetime=as.POSIXct(date_edit, format="%Y-%m-%d %H:%M", tz="UTC"))%>%
   #create column yyymmdd format
  mutate(date_ymd=as.Date(datetime))%>%
   #creat column time formate hh:mm
  mutate(hour_UTC=lubridate::hm(datetime))
    

lubridate 文档告知它无法处理大量数据,我很困惑:https://lubridate.tidyverse.org/reference/parse_date_time.html

重要提示:

date_time
中的时间信息表示测量温度的时间,例如
18:00
表示它是在 UTC 下午 6:00 收集的。这一点很重要,因为“小时”不能与“经过的时间”混淆。 “花了”18 个小时完成的事情与下午 6:00 完成的事情不同。

r date time lubridate posixct
© www.soinside.com 2019 - 2024. All rights reserved.