大家好,我是邓飞。
今天介绍一下,如何在R语言中,将数据整理为三线表,并导出为word文档中。常用的三线表结果有数据三线表、汇总统计三线表、方差分析三线表、回归分析三线表。下面我们分别进行介绍。
1. 安装R包
这里的R包主要的功能实现是 flextable
,功能强大,导出word方便。
如果没有安装,通过下面代码安装搞定。
install.packages("xtable")
install.packages("flextable")
flextable
是一个功能强大且灵活的R语言包,用于创建美观且可定制的表格,主要用于报告和文档生成。flextable
提供丰富的格式化选项,可以轻松生成复杂的表格,能够导出到多种格式,包括Word、PowerPoint和PDF。
2. 准备数据
这里,使用我编写的R包 learnasreml
,里面的数据 fm
作为数据演示。
library(xtable)
library(flextable)
library(learnasreml)
data(fm)
head(fm)
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))
library(tidyverse)
library(reshape2)
tt = melt(fm,1:5)
数据如下:
3. 数据三线表
比如,我们将前几列,整成三线表的形式:
d1 = head(tt)
re1 = flextable(d1)
re1
word中显示如下:
4. 汇总统计三线表
汇总统计,这里用上面我编写的函数 func
,统计最大值、最小值、平均值、标准差、变异系数。
数据汇总是数据分析的一个重要部分,其目的是将原始数据转化为更有意义的形式,以进行进一步分析或报告。R语言提供了丰富的数据汇总功能,可以帮助你快速而有效地对数据进行汇总、描述和可视化。
常用的数据汇总方法
描述性统计量
均值、中位数、标准差、四分位数等。
数据分组汇总
按照一个或多个变量对数据进行分组,然后计算合计、平均、频数等。
频率表和交叉表
用于显示分类变量的频数分布。
数据透视表
进行复杂的多维汇总分析。
可视化
常用的有柱状图、饼图、箱线图等。
# 汇总统计
a = aggregate(value~variable,tt,func)
temp = cbind(type = a$variable,as.data.frame(a$value))
re2 = flextable(temp)
三线表结果如下:
5. 方差分析三线表
方差分析(Analysis of Variance, ANOVA)是一种统计方法,用于检测不同组别之间均值是否存在显著差异。它在各种研究领域(如医学、农业、心理学等)中广泛应用。ANOVA 通常用于以下情景:
单因素方差分析(One-Way ANOVA):
比较单个因素(独立变量)的三个或更多水平(组别)。
双因素方差分析(Two-Way ANOVA):
比较两个因素的交互作用。
重复测量方差分析(Repeated Measures ANOVA):
用于处理具有时间依赖性或重复测量的数据。
方差分析的基本假设
正态性:
每组数据应该近似正态分布。
同方差性:
不同组的数据应该有相似的方差。
独立性:
各组数据应相互独立。
方差分析的步骤
设定假设:
零假设((H_0)):
各组别均值相等。
备择假设((H_a)):
至少有一组均值不同。
计算统计量:
使用F统计量进行检验。
结果解释:
如果p值小于显著性水平(如0.05),则拒绝零假设,说明各组别之间存在显著差异。
如果p值大于显著性水平,则不拒绝零假设。
这里,对Spacing和Rep和Fam进行三因素方差分析。
# 方差分析
mod1 = summary(aov(dj ~ Spacing + Rep + Fam, data=fm))
re3 = flextable(xtable(mod1))
三线表结果:
6. 回归分析三线表
这里,x变量是dj,y变量是h5,进行回归分析。
# 回归分析
mod2 = summary(lm(h5 ~ dj,fm))
re4 = flextable(xtable(mod2) %>% round(3))
因为小数比较多,所以用 round
保留3位小数。
7. 多元回归三线表
多元分析,y变量是h5,x变量分别是 dj, h1, h2, h3, h4
# 多元回归分析
mod3 = summary(lm(h5 ~ dj+h1 +h2 +h3 +h4,fm))
re5 = flextable(xtable(mod3) %>% round(3))
8. 把结果导出word
要把上面的结果,都导出到word中,可以用下面代码,一个表格,一个表格的导出,表格之间加一个空行,进行分割。
library(officer)
doc = read_docx()
doc = body_add_flextable(doc,re1)
doc = body_add_par(doc, value = "")
doc = body_add_flextable(doc,re2)
doc = body_add_par(doc, value = "")
doc = body_add_flextable(doc,re3)
doc = body_add_par(doc, value = "")
doc = body_add_flextable(doc,re4)
doc = body_add_par(doc, value = "")
doc = body_add_flextable(doc,re5)
doc = body_add_par(doc, value = "")
print(doc,"d:/tt.docx")
结果:
完美666!
想要更好的学习和交流,快来加入飞哥的知识星球,这是一个生物统计+数量遗传学+GWAS+GS的社区,在这里你可以向飞哥提问、帮你制定学习计划、跟着飞哥一起做实战项目,冲冲冲。点击这里加入吧:飞哥的学习圈子
资源推荐:
6,飞哥的学习圈子