R语言画table-三线图

Python063

R语言画table-三线图,第1张

#常规清空,加载包

## 读取数据,csv为例, row.names=1 设置的是第一列为数据的名称。 header=T 是指第一行为数据的列名。

check.names=F 当你的列名是以数字开头的时候,比如有的时候数据是时间相关的,6:00, 8:00, 10:00等,会在最前面显示一个x并且冒号会给你替换成点(6:00→x6.00)设置了检查名称为False之后就不会有这个问题。

画三线图, ~ 后选择需要显示的列的统计值; | 后选分组; data= 选择数据, render.continuous 显示细节,可选

c(.="Mean (SD)", .="Median [Min, Max]",.="Median [Q1, Q3]",.="Median [IQR]");overall=F:通体数值不显示。

操作之前安装好ggplot2、vegan、ggpubr包。如下:

install.packages("ggplot2")

install.packages("ggpubr")

install.packages("vegan")

计算Shannon-香农指数和Simpson-辛普森指数的命令在vegan包中,计算各组显著性的命令在ggpubr包中;画图使用ggplot命令,在行使每个命令之前一定要加载相应的包,如下:

library(ggplot2)

library(ggpubr)

library(vegan)

拿到一个otu表格,要先计算香农指数和辛普森指数,操作如下:

otu=read.table('D:/r-working/feature-table.taxonomy.txt',row.names = 1,skip=1,header=T,comment.char ='',sep='\t')

#读取out表格

#'D:/feature table.taxonomy.txt'为文件路径,注意斜线方向

#row.names = 1指定第一列为行名

#skip=1跳过第一行不读

#header=T指定第一个有效行为列名

#sep='\t'表示指定制表符为分隔符

#comment.char=''表示设置注释符号为空字符‘’,这样#后面的内容就不会被省略

otu=otu[,-ncol(otu)]

#去除表格的最后一列,无用信息

otu=t(otu)

#表格转置,必须将样品名作为行名

shannon=diversity(otu,"shannon")

#计算香农指数,先加载vegan包

shannon

#查看香农指数

simpson=diversity(otu,"simpson")

#计算辛普森指数,先加载vegan包

simpson

#查看辛普森指数

alpha=data.frame(shannon,simpson,check.names=T)

#合并两个指数

write.table(alpha,"D:/r-working/alpha-summary.xls",sep='\t',quote=F)

#存储数据,注意路径使用反斜杠

将各样本进行分组,并进行画图,操作如下:

map<-read.table('D:/r-working/mapping_file.txt',row.names = 1,header=T,comment.char ='',sep='\t',check.names=F)

#读取分组表格

group<-map["Group1"]

#提取需要的分组,'Group1'是表中的分组列名,包括A,B,C三组

alpha<-alpha[match(rownames(group),rownames(alpha)),]

#重排alpha的行的顺序,使其与group的样本id(行名)一致

data<-data.frame(group,alpha,check.rows=T)

#合并两个表格.'<-'与'='同属赋值的含义.

p=ggplot(data=data,aes(x=Group1,y=shannon))+geom_boxplot(fill=rainbow(7)[2])

#data = data指定数据表格

#x=Group1指定作为x轴的数据列名

#y=shannon指定作为y轴的数据列名

#geom_boxplot()表示画箱线图

#fill=rainbow(7)[2]指定填充色

此处用到ggplot2包画箱线图,将画图函数赋值给p后,可以用‘+’不断进行图层叠加,给图片p增加新的特性

p

#查看p

mycompare=list(c('A','B'),c('A','C'),c('B','C'))

#指定多重比较的分组对

mycompare

p<-p+stat_compare_means(comparisons=mycompare,label = "p.signif",method = 'wilcox')

#添加显著性标记的第一种方法,在此之前先加载ggpubr包

p<-p+ylim(2,5.5)

#调整图像的外观

转自医学方

2019-07-4 Alexander

流行病学或者医学论文中,对研究对象基本情况的描述通常以表格的形式进行,并且放在结果部分的开头,即Table 1,主要内容是研究对象一般情况和研究变量或协变量的分组展示。

前几天文章修回过程中,花了两天时间分析数据,修改文章,其中有近1天的时间都在手动录入数据(从R studio里把分析结果整理到Excel或者word),这样除了花费时间外,还非常容易出错。之前一直想找时间通过R markdown把制作表格的过程程序化,可是效果并不理想。

这次痛定思痛,先从table 1开始,发现了几个不错的方法。其中一种个人觉得可读性和可编辑性都比较强,于是学习了一下,作为一个非常实用的工具分享给大家。

这里主要参考一篇博客Fast-track publishing using knitr: table mania,对细节进行了加工和注释。

1 数据的准备

数据主要来自于boot包的melanoma。加载后,看下数据的基本结构。

接下来对数据进行简单的整理,为后续分析做准备;

将分类变量定义为因子型并设置标签(这里建议设置一个新的变量,仅用于table 1的制作,不影响后续的分析);

2 安装和加载R包 Gmisc

后面两个包是加载“Gmisc”时要求加载的。

3 自定义函数、制作表格

根据已有函数自定义函数,并制作表格。定义一个函数,输入数据集的变量并得到该变量的统计结果:

函数定义完成后,建立一个空的列表,以储存每个变量的分析结果,并进行分析,将结果储存在列表中:

将所有结果merge到一个矩阵中,并建立rgroup(table1第一列的变量名) 和 n.rgroup(table 1第一列每个变量的行数):

结果如下:

当然,有些情况下,需要多加一个分组标题栏(column spanner),该怎么加呢?

如下:

结果如下:

4 导出结果

在R studio viewer窗口点击白色按钮,即可在浏览器中打开,然后复制粘贴到word可以进一步加工修饰。

是不是很刺激呢。

应该还有其他的导出方法,不过这个已经很方便了。

拓展功能选

⒈ 二分类变量只显示一个(比如男性和女性)。只要在getDescriptionStatsBy的"show_all_values"参数设置为FALSE即可;

⒉ 显示缺失值。getDescriptionStatsBy的"useNA"参数设置为"ifany",表示如果有缺失值就显示缺失值情况;如设置为“no”,表示始终不显示缺失值情况;“always”则表示无论是否有缺失值都显示缺失值情况;

⒊ Total一列是可以去掉的,getDescriptionStatsBy的"add_total_col"参数设置为FALSE即可。

不足之处

⒈ 差异性检验是采用非参的方法,虽然没有错,但是一般符合参数检验条件的数据还是要使用参数检验的方法,这里可以自行检验后再修改P-value;

⒉ Mean (SD)的展示形式有个括号感觉有点别扭,还不知道怎么去掉,有方法的小伙伴欢迎分享交流。

另外有一些其他的制作table 1的R包,比如table 1(R包的名字)包,tableone包,还有其他生成表格的R包(plyr等),个人浏览下来感觉这个最容易理解和掌握,其他包的功能有兴趣的可以再自行挖掘对比。

原文链接: https://mp.weixin.qq.com/s?src=11&timestamp=1562230826&ver=1707&signature=Og8lYPNfFi99QvnQb8OAtkTIo75N9G0JHqvpXxLS5aRpqRcnlgtxXJAMtfgxB8kAK8vinKSxdO6A1qxNy-4k8AyE9wUMYKSarBLDydWO-vazmCNPJIAa5GfaBiFIghaO&new=1