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