2015-07-03 144 views
-1

我正在寻找一种将不同长度的时间序列转换为唯一长度的方法。 我觉得这个问题已经被我找不到了。我想我只是没有使用正确的词汇来解决这个问题。将时间序列转换为相同长度

数据1:20个变量×250个观测(时间点)

数据2:20个变量X 50个观测(时间点)

我想这些数据转换成100个观测,同时保持形状在这两种情况下的20个变量的曲线。

非常感谢

+1

后一些数据和代码,你最好的尝试吧。 –

回答

1

的样本数据

处理这个
set.seed(123) 
data <- matrix(0, 250, 20) 
data[1, ] <- rnorm(20) 
for (i in 2:nrow(data)) { 
    data[i, ] <- data[i - 1, ] + rnorm(20, 0, 0.02) 
} 
rownames(data) <- 0:249 

一种方法是用reshape2dplyr

library("reshape2") 
library("dplyr") 
library("ggplot2") 
molten <- melt(data, varnames = c("Time", "Variable")) 

地块原始数据:

ggplot(molten, aes(x = Time, y = value, colour = factor(Variable))) + geom_line() 

Plot of original data

现在,通过在每个时间段的值的5层中使用的装置的一个因素减少data.frame

shorter <- molten %>% 
    group_by(Variable, Time %/% 5) %>% 
    summarise(value = mean(value), Time = mean(Time)) 

剧情新数据:

ggplot(shorter, aes(x = Time, y = value, colour = factor(Variable))) + geom_line() 

Plot of shorter data

如果你想要原始的广泛形式的数据:

shorterWide <- acast(shorter, Time ~ Variable) 
+0

你可以做到这一点。这取决于你试图达到什么类型的平滑。 –

0

我想我发现使用此功能 Basic two-dimensional cubic spline fitting in R

我想我是缺少的关键词是三次样条的方式。

在我来说,我想要做这样的事情

花键(数据1,N = 100) 花键(数据1,N = 100)