使用方法:
联网安装程序包agricolae:install.packages("agricolae")
引用程序代码:把.R文件拖入R窗口,Enter
1.在Excel中复制数据区域,不用粘贴
2.回到R,运行f()或者f(0.01)
3.查看分析结果,并在Excel中粘贴出字母标记
程序文件源码(Duncan[16-3-4]-Windows.R):
- ##
- ## FGM 2016-3-4
- ##
- ## 单因素方差分析+duncan多重比较 快速标记字母 (for Windows)
- ##
- ## for Mac: 将两处"clipboard"替换为pipe("pbcopy")和pipe("pbpaste;echo")
- ## 帮助: fgh()
- ##
- library(agricolae)
- copy_to_clipboard = function(x,sep="\t",col.names=T,...) {
- write.table(x
- ,file = "clipboard" # Mac: pipe("pbcopy")
- ,sep=sep
- ,col.names = col.names
- ,row.names = F
- ,quote = F,...)
- }
- paste_from_clipboard = function(sep="\t",header=T,...) {
- read.table("clipboard" # Mac: pipe("pbpaste;echo")
- ,sep=sep
- ,header=header,...)
- }
- fgh <- function() {
- cat("\n",rep("#",5),"单因素方差分析+duncan多重比较 alpha默认=【0.05】\n ")
- cat(rep("#",5),"Help:fgh()\tUSAGE:\t从Excel复制纯数据区域,运行:f()或f(alpha值),粘贴字母标记结果回Excel;\n",rep("#",5),"\t\t\t数据分组:【按行】; 字母标记:【降序】;\n")
- }
- f <- function(fgalpha = 0.05) {
- fgh()
-
- dff = paste_from_clipboard(header = FALSE)
- cat("\n\n")
- cat("水平数:", nrow(dff))
- cat("\t重复数:", ncol(dff),"\n")
-
- x <- as.vector(t(dff))
- ### 数据若按列分组则为:as.vector(as.matrix(dff))
-
- level = factor(rep(1:nrow(dff),each=ncol(dff)))
- df = data.frame(x,level)
- resultaov = aov(x~level,data=df)
- duncanresult = duncan.test(resultaov,"level",console = TRUE, alpha = fgalpha)
-
- de=as.data.frame(duncanresult["groups"])
- de=de[order(de[,1]), ]
- copy_to_clipboard(as.data.frame( de[,3]) ,col.names = FALSE)
- cat("\n\n",rep("#",30),"\n",rep("#",5), " 已复制字母标记(按原数据区域顺序)到剪贴板。 ",rep("#",5),"\n",rep("#",30),"\n\n")
-
- }
- fgh()