首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个监测站kendall季节趋势检验的循环和子集,R中的EnvStats

多个监测站kendall季节趋势检验的循环和子集,R中的EnvStats
EN

Stack Overflow用户
提问于 2017-04-16 21:23:34
回答 1查看 284关注 0票数 1

使用EnvStats软件包中的Kendall季节趋势测试来评估水质数据,但我很难将代码调整为:

  1. 返回单个站点/站点的趋势统计数据(到目前为止唯一起作用的是删除每个站点/变量组合)
  2. 将输出合并为列表或其他紧凑形式。

测试本身很简单:

代码语言:javascript
复制
kendallSeasonalTrendTest(WQconc ~ Season + Year, data = ____) 

有许多变量和监测站点组合要评估,必须有一个更好的方法。似乎申请家庭在这里是相关的,但以下是迄今未起作用的原因:

代码语言:javascript
复制
 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)  

但这并不准确,而是返回整个数据集的测试统计信息,而不是按站点ID返回。

我尝试过申请家庭的过渡,但我也真的不明白。感谢你的任何想法!

EN

回答 1

Stack Overflow用户

发布于 2017-04-19 15:43:32

只需使用lapply,它返回的kendallSeasonalTrendTest()结果列表等于输入向量/列表的长度,特别是使用unique()检索的不同的Site_IDs。下面显示了两个子集类型。

然后对每个变量运行lapply。此外,使用setNames()命名每个列表元素以便于参考(例如,DO_results$s01541000)

代码语言:javascript
复制
# 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))
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43442300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档