如何为各种观察创建时间序列

时间:2014-05-26 14:22:27

标签: r time-series

我正在尝试在以下数据集中为两种鱼类的众多观察中创建不同的时间序列,以便我可以执行自相关分析。数据已导入R:BF<-read.table("butterflyfish_database_NEW.txt",header=T)。我在下面提供了这些信息的样本。

我非常关注如何针对x位置(x)和y位置(y)对每个观察(Obs_N)进行时间序列。换句话说,对于观察1(行2-110),x和y分别需要时间序列数据集,然后再用于观察2(109-136)的x和y等等。

例如,我尝试使用x.ts<-(x,Time)。这不起作用,即使它这样做也只会为x中的所有位置提供时间序列。我需要根据不同的观察结果来解决这个问题。

这是一个很大的问题,但任何帮助将不胜感激。

Species Site Obs_N Time x y Aus FG 1 30:00.0 206.44 100.09 Aus FG 1 30:30.0 205.89 101.34 Aus FG 1 31:00.0 206.38 103.53 Aus FG 1 31:30.0 206.22 106.87 Aus FG 1 32:00.0 204.79 107.93 Aus FG 1 32:30.0 202.85 108.06 Aus FG 1 33:00.0 202.85 108.06 Aus FG 1 33:30.0 202.85 108.06 Aus FG 1 34:00.0 202.84 108.05 Aus FG 1 34:30.0 202.85 108.06 Aus FG 1 35:00.0 202.85 108.06 Aus FG 1 35:30.0 203.56 108.61 Aus FG 1 36:00.0 206.13 107.45 Aus FG 1 36:30.0 207.53 106.22 Aus FG 1 37:00.0 207.05 103.49 Aus FG 1 37:30.0 206.86 100.33 Aus FG 2 00:00.0 207.44 106.78 Aus FG 2 00:30.0 207.60 106.61 Aus FG 2 01:00.0 208.33 103.72 Aus FG 2 01:30.0 207.35 102.57 Aus FG 2 02:00.0 206.30 102.27 Aus FG 2 02:30.0 206.43 101.60 Aus FG 2 03:00.0 206.73 100.66 Aus FG 2 03:30.0 206.50 101.11 Aus FG 2 04:00.0 206.63 100.95 Aus FG 2 04:30.0 206.27 102.02 Aus FG 2 05:00.0 207.93 105.83 Aus FG 2 05:30.0 207.15 106.98 Aus FG 2 06:00.0 206.28 107.32 Aus FG 2 06:30.0 204.70 108.36 Aus FG 2 07:00.0 203.41 107.97 Aus FG 2 07:30.0 202.63 107.76 Aus FG 2 08:00.0 201.13 107.85 Aus FG 2 08:30.0 198.74 107.60 Aus FG 2 09:00.0 197.41 106.45 Aus FG 2 09:30.0 196.77 106.12 Aus FG 2 10:00.0 195.98 105.92 Aus FG 2 10:30.0 196.15 106.18 Aus FG 2 11:00.0 196.55 105.97 Aus FG 2 11:30.0 197.02 106.35 Aus FG 2 12:00.0 197.93 107.17 Aus FG 2 12:30.0 198.57 107.11 Aus FG 2 13:00.0 200.24 108.01 Aus FG 2 13:30.0 202.16 107.62 Aus FG 2 14:00.0 204.16 108.12 Aus FG 2 14:30.0 206.72 106.96 Aus FG 2 15:00.0 207.14 106.58 Aus FG 2 15:30.0 207.76 106.85 Aus FG 2 16:00.0 207.97 106.20 Aus FG 2 16:30.0 207.60 106.09 Aus FG 2 17:00.0 207.86 106.03 Aus FG 2 17:30.0 208.46 104.95 Aus FG 2 18:00.0 208.60 104.68 Aus FG 2 18:30.0 208.53 104.44 Aus FG 2 19:00.0 208.17 103.21 Aus FG 2 19:30.0 207.70 99.42 Aus FG 2 20:00.0 208.30 99.23 Aus FG 2 20:30.0 207.16 99.32 Aus FG 2 21:00.0 206.92 99.67 Aus FG 2 21:30.0 207.48 99.66 Aus FG 2 22:00.0 207.02 99.98 Aus FG 2 22:30.0 207.76 99.61 Aus FG 2 23:00.0 206.64 100.06 Aus FG 2 23:30.0 207.19 100.18 Aus FG 2 24:00.0 206.71 100.38 Aus FG 2 24:30.0 206.35 100.70 Aus FG 2 25:00.0 208.12 105.47 Aus FG 2 25:30.0 207.33 106.37 Aus FG 2 26:00.0 206.43 107.17 Aus FG 2 26:30.0 206.95 106.39 Aus FG 2 27:00.0 203.66 107.68 Aus FG 2 27:30.0 203.12 107.59 Aus FG 2 28:00.0 201.67 107.75 Aus FG 2 28:30.0 199.64 107.16 Aus FG 2 29:00.0 197.32 106.01 Aus FG 2 29:30.0 195.46 105.45 Aus FG 2 30:00.0 194.87 104.49 Aus FG 2 30:30.0 194.65 103.70 Aus FG 2 31:00.0 194.29 103.09 Aus FG 2 31:30.0 194.47 104.16 Aus FG 2 32:00.0 194.92 105.08 Aus FG 2 32:30.0 197.23 105.36 Aus FG 2 33:00.0 198.08 106.82 Aus FG 2 33:30.0 199.23 107.27 Aus FG 2 34:00.0 199.41 107.61 Aus FG 2 34:30.0 200.02 107.44 Aus FG 2 35:00.0 201.61 107.50 Aus FG 2 35:30.0 203.89 108.03 Aus FG 2 36:00.0 204.65 107.88 Aus FG 2 36:30.0 205.10 108.24 Aus FG 2 37:00.0 205.45 108.16

1 个答案:

答案 0 :(得分:0)

我们假设这些数据存储在名为data.frame的{​​{1}}中。第一个问题是R实际上没有一个只用于“时间”的类,所以要创建一个时间序列,它必须转换为正确的日期/时间值。看起来你的价值只是几分钟和几秒钟。因此我们可以粘贴小时数,R将使用当前日期来填写值

dd

您没有指定用于时间序列数据的库,因此我只假设dd$DateTime <-as.POSIXct(paste("00:",dd$Time, sep=""), format="%H:%M:%S") 。现在我将分割xts变量上的数据,我们将每个子集转换为Obs_N对象

xts

这将创建tslist<-lapply(split(dd, dd$Obs_N), function(x) xts(x[,c("x","y")],x$DateTime)) 个对象的列表。您可以使用xtsObs_n==1tslist[[1]]

进入系列Obs_n==2

请注意,我遗漏了tslist[[2]]Species。它们在测试数据中都是相同的,所以我不确定它们有多重要。但我不确定如何将因子变量整合到时间序列对象中。