使用EnvStats
包中的Kendall季节性趋势测试来评估水质数据,但我无法将代码调整为:
单个站点/站点的返回趋势统计信息(到目前为止,只有对每个站点/变量组合进行分组的事项)
将输出合并为列表或其他紧凑形式
测试本身很简单:
kendallSeasonalTrendTest(WQconc ~ Season + Year, data = ____)
要评估众多变量和监测站点组合,必须有更好的方法。似乎申请家庭在这里可能是相关的,但到目前为止还没有起作用:
data.frame': 761 obs. of 13 variables:
$ Year : int 2007 2007 2007 2007 2008 2008 2008 2008 2009 2009 ...
$ Quarter : Factor w/ 4 levels "Fall","Spring",..: 4 2 3 1 4 2 3 1 4 2 ...
$ Date : Factor w/ 319 levels "1/10/2007","1/10/2013",..: 1 177 285 40 5 183 261 43 6 184 ...
$ Site_ID : Factor w/ 24 levels "s01541000","s01541500",..: 17 17 17 17 17 17 17 17 17 17 ...
$ DO : num 7.57 6.44 6.44 7.79 8.68 8.5 8.21 9.91 9.55 11.7 ...
$ Flow : num 33259 8912 2002 803 27680 ...
$ Iron : num 196 108 103 126 136 77 17 214 90 8 ...
$ Magnesium : num 205 309 75 92 190 285 71 98 320 263 ...
$ pH : num 6.75 7.4 8 7.8 6.1 7.4 7.7 7.8 7.6 6.8 ...
$ Temperature : num 3.5 5.7 27.7 20.1 5.5 9.7 23.8 17.6 0.1 8.7 ...
$ TDS : num 163 15 80 92 178 23 77 93 35 33 ...
$ TP : num 1 1 1 8 12 7 16 2 8 63 ...
kendallSeasonalTrendTest(DO ~ Quarter + Year, data =water1)
但这不起作用,返回整个数据集的测试统计信息,而不是Site ID。如果结果是以列表形式
,我们会想到我尝试了申请家庭的过渡,但我真的不理解他们。感谢任何想法!
答案 0 :(得分:0)
只需使用lapply
,它会返回kendallSeasonalTrendTest()
个结果列表,其等于输入向量/列表的长度,特别是使用unique()
检索的不同的 Site_IDs 。两种子集类型如下所示。
然后在每个变量上运行lapply
。另外,使用setNames()
命名每个列表元素以便于参考(例如,DO_results$s01541000
)
# DO Results
DO_results <- lapply(unique(water1$Site_ID), function(s)
kendallSeasonalTrendTest(DO ~ Quarter + Year,
data = subset(water1, Site_ID == s)))
# NAMING EACH LIST ELEMENT BY CORRESPONDING SITE_ID
DO_results <- setNames(DO_results, unique(water1$Site_ID))
# Flow Results
Flow_results <- lapply(unique(water1$Site_ID), function(s)
kendallSeasonalTrendTest(Flow ~ Quarter + Year,
data = water1[water1$Site_ID == s,]))
# NAMING EACH LIST ELEMENT BY CORRESPONDING SITE_ID
Flow_results <- setNames(Flow_results, unique(water1$Site_ID))
...