R中时间序列数据中的时间戳转换

时间:2016-10-03 10:11:37

标签: r time-series

我是R的新手,试图分析来自HVAC传感器的时间序列数据。数据采用以下格式。我是否需要在开始任何分析之前将其转换为ts()对象,或者我可以在下面找到相同的结果:

 Time | Value
1 7/6/16 4:45|28
2 7/8/16 4:51|31
3 7/6/16 5:10|26
4 7/6/16 5:10|26
5 7/6/16 5:11|26
6 7/6/16 5:11|26

str(dataset)
data.frame':    628 obs. of  2 variables:
 $ Time : chr  "7/6/16 4:45" "7/8/16 4:51" "7/6/16 5:10" "7/6/16 5:10" ...
 $ Value: int  28 31 26 26 26 26 26 27 29 29 ... 

现在我需要将时间格式从字符更改为任何其他格式吗?当我运行以下代码时:

dataset$Time=as.POSIXct(as.character(dataset$Time),format="%Y-%m-%d %H:%M:%S")

数据集中的时间变为NA

由于 Dwiti

2 个答案:

答案 0 :(得分:0)

试试这个(假设你有m / d / y格式的日期)

dataset$Time = strptime(as.character(dataset$Time),format="%m/%d/%y %H:%M")
head(dataset$Time,3)
[1] "2016-07-06 04:45:00 IST" "2016-07-08 04:51:00 IST" "2016-07-06 05:10:00 IST"

答案 1 :(得分:0)

我们可以使用mdy_hm

中的紧凑选项lubridate
library(lubridate)
dataset$Time <- mdy_hm(dataset$Time)
dataset$Time
#[1] "2016-07-06 04:45:00 UTC" "2016-07-08 04:51:00 UTC"
#[3] "2016-07-06 05:10:00 UTC" "2016-07-06 05:10:00 UTC"
#[5] "2016-07-06 05:11:00 UTC" "2016-07-06 05:11:00 UTC"

数据

dataset <- structure(list(Time = c("7/6/16 4:45", "7/8/16 4:51", "7/6/16 5:10", 
"7/6/16 5:10", "7/6/16 5:11", "7/6/16 5:11"), Value = c(28L, 
31L, 26L, 26L, 26L, 26L)), .Names = c("Time", "Value"), row.names = c(NA, 
-6L), class = "data.frame")