转自医学方
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
我来简化下一楼的命令、随机生成6~16位密码,每一位密码有一半的概率是数字或者英文。如果是英文有一半的概率是大写或小写.....版本 2
.支持库 spec
.局部变量 随机密码位数, 整数型
.局部变量 大小写, 整数型
.局部变量 字母数字, 整数型
.局部变量 位数, 整数型
.局部变量 密码表, 文本型, , "0"
.局部变量 密码, 文本型
密码表 = { “a”, “b”, “c”, “d”, “e”, “f”, “g”, “h”, “i”, “j”, “k”, “l”, “m”, “n”, “o”, “p”, “q”, “r”, “s”, “t”, “u”, “v”, “w”, “x”, “y”, “z” }
置随机数种子 ()
随机密码位数 = 取随机数 (6, 16)
.计次循环首 (随机密码位数, )
大小写 = 取随机数 (0, 1)
字母数字 = 取随机数 (0, 1)
.如果 (字母数字 = 0)
位数 = 取随机数 (1, 26)
.如果 (大小写 = 0)
密码 = 密码 + 到大写 (密码表 [位数])
.否则
密码 = 密码 + 密码表 [位数]
.如果结束
.否则
密码 = 密码 + 到文本 (取随机数 (0, 9))
.如果结束
.计次循环尾 ()
调试输出 (“随机密码为:” + 密码)
1、分析数据表:通过浏览“入库明细”表,我们可能看到入库明细表中,作为提取记录的条件零件号在A列。需要提取的记录,入库日期在H列、入库单号在O列、最后生产批号在L列、入库前库存数在Q列。为DC000496ZL的记录有5条(截图中的4条是指上面有4条)。
2、列出提取条件及项目:在sheet1中,将A列放置提取条件(即零件号)。在B、C、D、E列分别写上提取项目名称:入库日期、入库单号、最后生产批号、入库前库存数。
3、写公式:在最后入库日期项目下B2中输入公式:=MAX((入库明细!$A$2:$A$26=$A2)*(入库明细!$H$2:$H$26)),这是一个数组公式,请用三键确认(ctrl+shift+enter)。
搜索
免费自学excel教程全套
excel另一列数据提取
自动抓取数据excel表
表格技巧大全
excel100个常用技巧
新手怎么做财务报表