如何在R中设置时间格式

如何在R中设置时间格式,r,R,我得到了一个分别列出日期和时间的数据集。日期很好,但是时间被视为字符,而不是日期/时间对象 当前时间列看起来像“13:00”、“13:05”、“13:10”等 我尝试使用as.POSIXct()对该列进行变异,但它将该列更改为全NA 这是我的尝试: data = data %>% mutate(time = as.POSIXct(time, format = "h:m")) 我希望有一个类似的列,但不是字符串,而是时间/日期。谢谢你的帮助 chron中的times类可以表示没有

我得到了一个分别列出日期和时间的数据集。日期很好,但是时间被视为字符,而不是日期/时间对象

当前时间列看起来像“13:00”、“13:05”、“13:10”等

我尝试使用as.POSIXct()对该列进行变异,但它将该列更改为全NA

这是我的尝试:

data = data %>%
    mutate(time = as.POSIXct(time, format = "h:m"))


我希望有一个类似的列,但不是字符串,而是时间/日期。谢谢你的帮助

chron中的
times
类可以表示没有日期的时间:

library(chron)
library(dplyr)

# input data
data <- data.frame(date = "2000-01-01", time = c("13:00", "13:05", "13:10"))

data %>%
  mutate(date = as.chron(as.character(date)),
         time = times(paste0(time, ":00")),
         datetime = chron(date, time))

如果将
用作.POSIXct
,则需要提供不同的格式:

as.POSIXct("13:05", format = "%H:%M")
但是,这将返回“2019-03-26 13:05:00 CET”,因为日期/时间表示为日历日期加上最接近秒的时间

如果只想使用时间,可以使用
数据。table::asITime

data.table::as.ITime(c("13:00", "13:05", "13:10"))
这将返回:

str(data.table::as.ITime(c("13:00", "13:05", "13:10")))
'ITime' int [1:3] 13:00:00 13:05:00 13:10:00

对于简单的非成套解决方案:

我首先要创建一个列,其中包含日期和时间

dateandtime <- as.character(paste(date, time, sep = ' '))
只需将dataframe名称放在所有变量前面,例如:

df$dateandtime <- as.character(paste(df$date, df$time, sep = ' '))
df$dateandtime
dateandtime <- strptime(dateandtime,
                        format = "%Y-%m-%d %H:%M",
                        tz = 'GMT')
df$dateandtime <- as.character(paste(df$date, df$time, sep = ' '))