我需要处理几百个时间序列,这些时间序列大致对应于类似的测量,但是在不同的日子里有不同的人。
时间戳已经转换为POSIX格式。
我的问题是我想忽略这样一个事实,即时间序列是在不同日期和不同的开始时间进行采样的。换句话说,我想重新格式化时间序列,使它们从完全相同的开始时间开始计算秒数,这样就可以更容易地比较它们。
以下是两个系列的示例:
系列1的时代:
"2015-10-15 07:48:59 CEST", "2015-10-15 07:49:59 CEST", "2015-10-15 07:50:59 CEST", ...
系列2的时代:
"2015-10-17 02:08:59 CEST", "2015-10-17 02:09:59 CEST", "2015-10-17 02:10:59 CEST", ...
两个系列都应该映射到一种标准的时间框架,例如
"2000-01-01 09:00:00 CEST", "2000-01-01 09:00:01 CEST", "2000-01-01 09:00:02 CEST", ...
你会怎么做?
答案 0 :(得分:1)
您只需要分别从每个索引中减去第一个索引值。例如:
require(xts)
data(sample_matrix)
x <- as.xts(sample_matrix, dateFormat="Date")
head(x)
# Open High Low Close
# 2007-01-02 50.03978 50.11778 49.95041 50.11778
# 2007-01-03 50.23050 50.42188 50.23050 50.39767
# 2007-01-04 50.42096 50.42096 50.26414 50.33236
# 2007-01-05 50.37347 50.37347 50.22103 50.33459
# 2007-01-06 50.24433 50.24433 50.11121 50.18112
# 2007-01-07 50.13211 50.21561 49.99185 49.99185
index(x) <- index(x) - unclass(start(x))
head(x)
# Open High Low Close
# 1970-01-01 50.03978 50.11778 49.95041 50.11778
# 1970-01-02 50.23050 50.42188 50.23050 50.39767
# 1970-01-03 50.42096 50.42096 50.26414 50.33236
# 1970-01-04 50.37347 50.37347 50.22103 50.33459
# 1970-01-05 50.24433 50.24433 50.11121 50.18112
# 1970-01-06 50.13211 50.21561 49.99185 49.99185