[问题] 用*apply或dplyr::do批次跑ANOVA

楼主: helixc (@_2;)   2015-11-17 16:23:55
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
会GOOGLE然后依样画葫芦写分析程式
[问题叙述]:
手上有一笔资料,基本上要看在四个不同样区(site)当中,物种种类(SpeciesType)
如何影响某个值(n),资料如:http://pastebin.com/qyLga5Za ,要跑ANOVA和TukeyHSD。
要用工人智慧自己写一样的程式码四次目前是做得到的,但总想找到更聪明的方法。
理想上想要写个程式一次把重要的统计字段(如F-value, P-value...etc)整理出来。
看了各种资料,知道在R当中各种*apply是向量化处里资料重要的指令,
我想做的工作理论上可以用*apply实现。
但目前只对基础的apply比较熟悉,sapply/lapply今天摸一摸才比较懂,
而tapply/mapply还还没有机会用过。
在股狗的过程当中也发现dplyr::do也可以做类似的工作,也查到了Wush978的简略介绍,
但用一用还是有点卡住...是因为dplyr::do只能处里data.frame的关系吗?
*apply或dplyr::do的参考资料都是这个网页 http://goo.gl/WYJXtC
[程式范例]:
1.用*apply的传统方法,可以把aov塞进去。网页用的是sapply,我改成lapply。
可以跑ANOVA还有TukeyHSD没有问题
models <- lapply(unique((data$site)),
function(ste)
{aov(n~SpeciesType,data=data,subset=(site==ste))})
lapply(models,summary) # to summarize all the models
lapply(models,TukeyHSD)
2. 改用dplyr::do来写,用lm的方法来写没问题,但缺点是不能直接套用TukeyHSD
data<-data %>% group_by(site)
models <-data %>% do(mdls= lm(n~SpeciesType, data=.))
models %>% rowwise %>% do(data.frame(anova(.$mdls)))
3. 改用dplyr::do来写,用aov,但怎么写都会吐错误讯息...
data<-data %>% group_by(site)
models <-data %>% do(mdls=aov(n~SpeciesType, data=.))
models %>% rowwise %>% do(data.frame(summary(.$mdls)))
错误讯息:
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors =
stringsAsFactors) : cannot coerce class "c("summary.aov", "listof")" to
a data.frame
[环境叙述]:
R version 3.2.1 (2015-06-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese
(Traditional)_Taiwan.950
[3] LC_MONETARY=Chinese (Traditional)_Taiwan.950 LC_NUMERIC=C
[5] LC_TIME=Chinese (Traditional)_Taiwan.950
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] tidyr_0.2.0 readxl_0.1.0 ggplot2_1.0.1 dplyr_0.4.2 plyr_1.8.3
loaded via a namespace (and not attached):
[1] Rcpp_0.11.6 knitr_1.10.5 magrittr_1.5 MASS_7.3-41
munsell_0.4.2
[6] colorspace_1.2-6 R6_2.0.1 stringr_1.0.0 tools_3.2.1
parallel_3.2.1
[11] grid_3.2.1 gtable_0.1.2 DBI_0.3.1 htmltools_0.2.6
yaml_2.1.13
[16] lazyeval_0.1.10 assertthat_0.1 digest_0.6.8 reshape2_1.4.1
rmarkdown_0.7
[21] labeling_0.3 stringi_0.5-2 scales_0.2.5 proto_0.3-10
[关键字]:
*apply, dplyr::do
作者: Edster (Edster)   2015-11-17 21:31:00
你先写好对一个物种的分析再来吧. 这样对你比较好
楼主: helixc (@_2;)   2015-11-17 23:07:00
我要做的分析有做出来啊,物种本身在这个分析不重要要看的只有某个值(n)在不同SpeciesType的状况而已…

Links booklink

Contact Us: admin [ a t ] ucptt.com