将 R 中的 Mann-Kendall 测试的输出格式化并导出到 Rstudio 中的 excel

嗜好者

我刚刚开始使用 R 并想使用该trend包对Mann-Kendall多口井的年度地下水位数据进行测试。这是我的数据帧中的一个示例pri.csv

dput(head(GL, 10))
structure(list(WLCODE = structure(c(8L, 5L, 3L, 6L, 1L, 7L, 18L, 
19L, 20L, 22L), .Label = c("W04039", "W04295", "W04299", "W04790", 
"W04791", "W04797", "W04799", "W04824", "W25293", "W25298", "W25355", 
"W25385", "W25404", "W25438", "W25445", "W25451", "W25476", "W25596", 
"W25598", "W25599", "W25600", "W25612", "W25697", "W31151", "W31152"
), class = "factor"), YEAR_OBS = c(2018L, 2018L, 2018L, 2018L, 
2018L, 2018L, 2018L, 2018L, 2018L, 2018L), POMRB = c(4.14, 9.05, 
8.87, 2.3, 6.05, 3.6, 2.05, 4.27, 7.9, 8.4)), .Names = c("WLCODE", 
"YEAR_OBS", "POMRB"), row.names = c(NA, 10L), class = "data.frame")

这是我到目前为止所做的:

mydata<-read.csv("pri.csv")
sp <- split(mydata, mydata$WLCODE)
results_list <- lapply(sp, function(mydata){
  tryCatch(mk.test(mydata[, 3]),
           error = function(e) e)
})
bad <- sapply(results_list, inherits, "error")
results_list[!bad]

输出

$W07792

    Mann-Kendall trend test

data:  DF[, 3]
z = 1.0355, n = 16, p-value = 0.3004
alternative hypothesis: true S is not equal to 0
sample estimates:
       S     varS      tau 
 24.0000 493.3333   0.2000 


$W07793

    Mann-Kendall trend test

data:  DF[, 3]
z = -0.68205, n = 20, p-value = 0.4952
alternative hypothesis: true S is not equal to 0
sample estimates:
          S        varS         tau 
-22.0000000 948.0000000  -0.1164037

我想使用此输出生成一个表,并将其导出到 excel 中WLCODE,每一行中都有Z, p-value, S, varS,tau列中的值。我怎样才能做到这一点?请帮忙。

用户11937744

一个选项是tidybroom

library(broom)
library(purrr)
library(trend)
map_dfr(results_list[!bad], tidy)

通过提取单个组件使用lapplyfrombase R

out <- do.call(rbind, lapply(results_list[!bad], function(x) 
  cbind(data.frame(p.value =  x$p.value, statistic  = x$statistic), 
          data.frame(as.list(x$estimates)))))
row.names(out) <- NULL


out
#    p.value statistic  S     varS        tau
#1 1.0000000  0.000000  1 3.666667  0.3333333
#2 1.0000000  0.000000  1 3.666667  0.3333333
#3 0.2962699 -1.044466 -3 3.666667 -1.0000000
#4 1.0000000  0.000000 -1 3.666667 -0.3333333

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在r中的多个列上运行Mann-Kendall

加速在R中庞大的数据集上计算mann-kendall检验的并行过程

如何将列表导出到 R 中的自格式化文本文件中?

将结果 R 数据框导出到 Excel 文件中

将MySQL中的值输出到预格式化的表中

将 R 数据框导出到 excel 但使用列标签作为 excel 文件中的标题

如何使用循环在多个工作站上执行Mann-kendall测试?

如何将数据(格式 yyyy/mm/dd)从 csv 转换为 R (Rstudio) 中的向量

如何基于R中的列中的值有条件地执行许多Mann-Whitney测试?

将变量导出到 Excel 中

将R输出导出到Excel

是否可以将特定的数据从SQL数据库导出到Word文档中的预格式化表中?

在 Rstudio 中卸载 R Markdown

无法在Java中输出格式化的double

从asp.net导出到Excel时,仅将Excel中的1列格式化为强制文本并将所有其他列保留为数字

R Shiny将记录导出到用户命名的Excel工作簿中

将描述性的统计值行从R导出到Excel工作表中

R:在RStudio中,如何将Knitr输出到另一个文件夹,以避免使驱动器混乱?

如何将参数从Excel / VBA传递到Rstudio中的脚本

将列表列表中的输出格式化为列

如何将powershell中的管道输出格式化为一行

在R中更改split()的输出格式

将列表列表以CSV格式导出到单独的文件或Excel工作表中

在 RStudio 中设置重新格式化代码的行长?

将控制台输出导出到 jupyter notebook 中的 Excel 表

将列表导出到R中的CSV或TXT文件中

如何在 R 中运行 Kruskal-Wallis 或 Mann-Whitney 检验?

如何抑制RStudio中的输出?

如何将ListDataProvider的结果导出到GWT中的excel