1

我有大约 13 个不同站点的以下数据:

> dput(RawData[1:10,])
structure(list(Station = c(469, 469, 469, 469, 469, 469, 469, 
469, 469, 469), Classification = structure(c(1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L), .Label = c("  Approved  ", "  Conditionally Approved  ", 
"  Prohibited  "), class = "factor"), SampleDate = structure(c(8504, 
8504, 8505, 8505, 8532, 8532, 8533, 8533, 8561, 8561), class = "Date"), 
Year = c(1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 
1993, 1993), SWTemp = c(10, 11, 10, 10, 14, 15, 12, 14, 15, 
16), Salinity = c(26, 28, 28, 30, NA, NA, 30, 30, 28, 18), 
FecalColiform = c(1.8, 2, 2, 1.8, 2, 2, 1.8, 1.8, 4.5, 2)), .Names = c("Station", 
"Classification", "SampleDate", "Year", "SWTemp", "Salinity", 
"FecalColiform"), row.names = c(NA, 10L), class = "data.frame")

我想分别对每个站点的粪便大肠菌群数据运行 SeasonalMannKendal。我知道它必须是一个时间序列。如何使每个站点成为它自己的时间序列,以便我可以运行这些测试?

我试图重塑数据以按样本日期列出站点结果,但这会为某些日期创建 NA,我也无法以这种方式运行测试。

我最好的方法是什么?

先感谢您!

4

1 回答 1

0

您可以通过几种方式做到这一点,但这种方式会给您一个数据框列表,其中每个数据框只有一个站的数据。我还添加了as.ts使用 TSA 库将数据转换为时间序列的内容。您可能需要使用日期来获得您想要的日期。

library("TSA")
mylist = list()
for(i in 1:unique(RawData$Station)){
  mylist[[i]] = as.ts(RawData[RawData$Station == i,])
}

names(mylist) = unique(RawData$Station)

现在您可以通过执行类似的操作来选择您想要的站点mylist[["429"]]

如果您只想要不在列表中的单独数据框,您可以执行以下操作:

Station1 = RawData[RawData$Station == 1,]
Station2 = RawData[RawData$Station == 2,]

...ETC。

PS,将来使用它会很有帮助,dput(yourdata)以便有人可以轻松地复制粘贴您的问题并解决它。感谢您提供一个清晰的例子!

于 2015-12-08T23:35:17.533 回答