在r的多个柱子上运行Mann Kendall

  • 本文关键字:运行 Mann Kendall r
  • 更新时间 :
  • 英文 :


我是R领域的新手,希望同时在多个列上运行mann-kendall。

structure(list(Year = c(1997, 1999, 2001, 2002), pH = c(8, 8.4, 
8.2375, 8.27333333333333), Colour = c(16, 50.5, 21, 17.9090909090909
)), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))

这是我的数据样本

以下是我尝试的单个列

MannKendall(NoordAnnual$Colour)
# tau = -0.137, 2-sided pvalue =0.4173

我希望得到一个包含所有列的tau和p值的表。

我们可以使用lapply在感兴趣的列上循环。在这里,第一列被删除,因为它是"年份">

library(Kendall)     
out <- lapply(NoordAnnual[-1], MannKendall)
out
#$pH
#tau = 0.333, 2-sided pvalue =0.7341
#$Colour
#tau = 0, 2-sided pvalue =1

或使用dplyr

library(dplyr)
NoordAnnual %>%
summarise(across(-1,  ~list(MannKendall(.))))

如果我们想作为一个表

library(tidyr)
library(broom)
NoordAnnual %>%
summarise(across(-1,  ~list(MannKendall(.) %>%
tidy %>%
select(p.value, statistic)))) %>%
pivot_longer(everything()) %>%
unnest(c(value))
# A tibble: 2 x 3
#  name   p.value statistic
#  <chr>    <dbl>     <dbl>
#1 pH       0.734     0.333
#2 Colour   1         0    

最新更新