育种数据分析之放飞自我分享 http://blog.sciencenet.cn/u/yijiaobai 关注:生物统计,数量遗传,混合线性模型,生物信息,R,Perl,Python,GWAS,GS相关方法,文章及代码

博文

R语言数据和统计结果怎么更友好显示并输出到word

已有 5086 次阅读 2018-10-24 20:00 |个人分类:R语言|系统分类:科研笔记

1. 软件包介绍: xtable和flextable

这个软件包, 主要是可以将R的对象生产Latex和html的格式,但是对于输出word和直接在R中显示支持不够. 这样就用到到了第二个软件包: flextable.

flextable有很多功能, 比较好用的是它可以将xtable的格式转化为flextable, 这样就可以进行图表的可视化和结果输出, 它可以输出word和PPT格式, 下面以几个示例进行演示.

2. 软件安装

xtable和flextable在CRAN上, 所以通过install.packages直接安装即可, 安装代码如下(去掉注释#后执行代码)

# install.packages("xtable")
# install.packages("flextable")

3. 示例演示

3.1 图表演示

这里, 我们使用一个汇总统计, 结果包括性状, 最大值, 最小值, 标准差, 变异系数等, 结果是三线表的形式.

library(VSNR)
data(fm)
str(fm)
  TreeID Spacing Rep   Fam Plot    dj    dm    wd h1  h2  h3  h4  h5
1  80001       3   1 70048    1 0.334 0.405 0.358 29 130 239 420 630
2  80002       3   1 70048    2 0.348 0.393 0.365 24 107 242 410 600
3  80004       3   1 70048    4 0.354 0.429 0.379 19  82 180 300 500
4  80005       3   1 70017    1 0.335 0.408 0.363 46 168 301 510 700
5  80008       3   1 70017    4 0.322 0.372 0.332 33 135 271 470 670
6  80026       3   1 70002    2 0.359 0.450 0.392 30 132 258 390 570

生成一个汇总函数

计算性状的总个数, 最大值, 最小值, 标准差, 变异系数等.

func <- function(x)(c(n = length(x),mean=mean(x,na.rm = T),max = max(x,na.rm = T), min = min(x,na.rm = T),sd=sd(x,na.rm = T),cv=sd(x,na.rm = T)/mean(x,na.rm = T)*100))

将数据重塑: melt

因为要分析多个性状, 这里将性状放到一列, 使用函数melt进行重塑数据.

library(tidyverse)
library(reshape2)
tt = melt(fm,1:5)
head(tt)

这里, 多个性状dj, dm等性状, 放到variable一列.

  TreeID Spacing Rep   Fam Plot variable value
1  80001       3   1 70048    1       dj 0.334
2  80002       3   1 70048    2       dj 0.348
3  80004       3   1 70048    4       dj 0.354
4  80005       3   1 70017    1       dj 0.335
5  80008       3   1 70017    4       dj 0.322
6  80026       3   1 70002    2       dj 0.359
a = aggregate(value~variable,tt,func)
re = cbind(type = a$variable,as.data.frame(a$value))
library(xtable)
library(flextable)
m1 = xtable_to_flextable(xtable(re))
m1

效果如下
图片.png

3.2 方差分析表

mod1 = summary(aov(dj ~ Spacing + Rep + Fam, data=fm))
xtable_to_flextable(xtable(mod1))

3.3 简单回归分析

mod2 = summary(lm(h5 ~ dj,fm))
xtable_to_flextable(xtable(mod2))

图片.png

3.4 多元回归分析

mod3 = summary(lm(h5 ~ dj+h1 +h2 +h3 +h4,fm))
tt = xtable_to_flextable(xtable(mod3))
tt

图片.png

4 结果输出到word里面

library(officer)
doc = read_docx()
doc = body_add_flextable(doc,tt)
print(doc,"d:/tt.docx")

word中查看结果
图片.png

关注我的公众号:



http://wap.sciencenet.cn/blog-2577109-1142606.html

上一篇:Python学生物统计---T检验---学习笔记6
下一篇:R语言混合线性模型包代码演示

1 梅志平

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-10-27 09:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部