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
效果如下
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中查看结果
关注我的公众号:
网友评论