In conjunction with many other tidy tools, the package should be useful for health, behavioral, and social scientists working on quantitative research.

今天学习别人的代码,看到将table1和tidyr一起写出来的代码真的太方便太简洁了。而且看到furniture这个包就是开发出来给医学和社会科学的量性研究者用的,这不正对胃口嘛,于是整理一下furniture包的一些知识,分享给大家。

首先的感觉就是这个包很简洁,包的函数主要就只有8个,但和tidyverse结合起来的效果真的方便,包的名字翻译过来就叫做“家具”,家具就是为了让家庭生活更舒服的嘛,这个包就是为了让health, behavioral, and social scientists的数据分析做起来更舒服的,用起来也确实舒服。接下来就给包中的重要函数做个简单介绍:

table1

table1和之前写过的tableone作用一样,但是比tableone用起来更简单。同时这个函数也是这个包最重要的函数:

Table 1 is the main function in furniture. It is useful in both data exploration and data commu-
nication.With minimal cleaning, the outputted table can be put into an academic, peer reviewed journal manuscript. As such, it is very useful in exploring your data when you have a stratifying variable

比如对于数据集nhanes_2010,我想描述age, marijuana, illicit, rehab这四个变量,就可以写出如下代码:

nhanes_2010 %>% table1(
age, marijuana, illicit, rehab,
na.rm = FALSE)

输出如下:

再结合group_by函数或者splitby参数就可以实现变量的分组描述,比如我用asthma变量对样本进行分组后再描述相应变量,代码和对应输出如下:

nhanes_2010 %>% table1(
age, marijuana, illicit,
splitby=~asthma,
na.rm = FALSE)

结合test和type参数可以很方便的报告组间比较的结果,这个结果是包括相应统计量和对应p值的,这一点就比tableone就好用多了,例子见下:

nhanes_2010 %>% table1(
age, marijuana, illicit,
splitby=~asthma,
test = TRUE,
type = "full",
na.rm = FALSE)

并且上面的所有的结果展示的表格都可以结合很多别的参数使用,比如现在展示的例子都是将NA作为变量水平展示出来的,我们可以用na.rm设置为TRUE就可以将NA拿掉;还有我们展示的例子都是分组后算的组内变量的各个水平的占比,我们也可以加上row_wise = TRUE,参数算某个变量的组间构成比例,代码和示例如下:

nhanes_2010 %>%
group_by(asthma) %>%
table1(age, marijuana, illicit, rehab,
output = "text2",
na.rm = F,
test = TRUE,
total = TRUE,row_wise = TRUE,
type = "full")

还有,table1帮助我们做表的时候我们可以方便地改变量名,不需要去动原始数据的那种方便,比如我现在代码中描述了4个变量,这4个变量在数据库中的名字为age, marijuana, illicit, rehab,做表的时候我想改一下,我就可以用“新名字”=旧名字的格式进行改动,例子如下:

nhanes_2010 %>%
group_by(asthma) %>%
table1(
'请'=age, "持续"=marijuana,'关注'= illicit,'codewar'= rehab,
na.rm = FALSE)

变量名改动后输出如下:

真的很方便哈,table1函数结合export参数可以将结果输出为csv,“latex”,“markdown”,“pandoc”等文件类型,写论文用起来就是直接粘贴的事,如果你用markdown写就更方便,同学们平时一定用起来。

tableC

tableC可以很方便地输出相关分析的结果表格,比如我要做age, active, vig_active这三个变量的相关,我就可以写出如下代码:

nhanes_2010 %>% tableC(
age, active, vig_active,
na.rm=TRUE)

很简单,结果中相关系数和p值就都有了:

上面介绍的两个函数对论文写作帮助是非常大的,还有一个函数叫做tableF可以给到我们变量的频数和累计频数,这个我们一般不太用得到。

washer

washer函数可以帮助我们将多余的变量水平洗脱掉,什么意思呢,比如我们现在的数据中777和999都是表示NA的,这个时候我们用mutate结合if_else或者case_when函数将其变为NA,但其实挺麻烦的,或者考虑replace函数,但是这个函数灵活性也不够,对比起来washer函数还是一个非常好用的工具。

比如,大家先看数据中原来age这变量的频数:

可以看到age为18的有191个人,然后还有19到30岁的,这个时候我突然想将18岁以上的全部归为一个组叫做“>18”,我就可以用washer函数写代码:

nhanes_2010 %>%
mutate(age=washer(age,19:30,value = '>18')) %>% tableF(age)

可以看到结果中除了18之外的所有取值都成了>18,这个就很很方便,当然上面这个例子用ifelse也很方便,如果age是一个分类变量,且这个分类变量取值很多的情况下,这个washer函数才是最方便的选择。

rowmeans

很多时候我们需要按行求变量的和或者均值,这个时候可以用到rowmeans() and rowsums()

示例如下图:

也很方便简洁,同时还有long和wide两个函数可以方便地帮助我们进行数据的长宽转换,其中long函数可以快速实现一个数据集的多组宽转长操作,很方便的,大家摸索一下就可以发现它的好用了。

R数据分析:做量性研究的必备“家伙什”-furniture包介绍的更多相关文章

  1. R数据分析:如何给结构方程画路径图,tidySEM包详解

    之前一直是用semPlot这个包给来进行结构方程模型的路径绘制,自从用了tidySEM这个包后就发现之前那个包不香了,今天就给大家分享一下tidySEM. 这个包的很大特点就是所有的画图原始都是存在数 ...

  2. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  3. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  4. R数据分析:二分类因变量的混合效应,多水平logistics模型介绍

    今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...

  5. R数据分析:样本量计算的底层逻辑与实操,pwr包

    样本量问题真的是好多人的老大难,是很多同学科研入门第一个拦路虎,今天给本科同学改大创标书又遇到这个问题,我想想不止是本科生对这个问题不会,很多同学从上研究生到最后脱离科研估计也没能把这个问题弄得很明白 ...

  6. R数据分析:如何简洁高效地展示统计结果

    之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...

  7. R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法

    之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...

  8. R数据分析:孟德尔随机化中介的原理和实操

    中介本身就是回归,基本上我看到的很多的调查性研究中在中介分析的方法部分都不会去提混杂,都是默认一个三角形画好,中介关系就算过去了,这里面默认的逻辑就是前两步回归中的混杂是一样的,计算中介效应的时候就自 ...

  9. 用R语言 做回归分析

    使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程. 首先,我们先构造一个分析的数据集 x<-data.frame(y=c(102,115,124,1 ...

  10. R语言重要数据集分析研究——需要整理分析阐明理念

    1.R语言重要数据集分析研究需要整理分析阐明理念? 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候如何下手分析,数据分析的第一步,探索性数据分析. 统计量,即统计学里面关注的数据集的几个指标 ...

随机推荐

  1. 信创环境经典版SuerMap iManager ARM版部署流程

    一.环境 操作系统:银河麒麟kylin V10 CPU:鲲鹏920 SuperMap iManager 10.2.1 硬件:4H32G机器 磁盘分区格式建议如下(请严格按照如下,减少后期有用/目录资源 ...

  2. 【赵渝强老师】SQL的字符函数

    字符函数,顾名思义,操作的就是字符串.通过下图,我们来了解一下Oracle的字符函数. 一.大小写控制函数 lower.upper.initcap select lower('Hello World' ...

  3. AntDesign-Vue Table 查询与分页

    前言 之前的增删改查小 Demo 已经快要进行到最后一步了,这节的任务是将请求数据的方式改为 分页,并且增加 分页条件查询 的功能. 页面布局 <a-table :data-source=&qu ...

  4. template<> 模板特化

    template<> 是用于 模板特化(Template Specialization) 的一种语法. 模板特化允许你为某些特定的模板参数提供不同的实现.例如,template<&g ...

  5. 3个步骤轻松集成Push Kit,实现App消息推送

    推送通知作为App重要的消息传递工具,广泛应用于电子商务.社交媒体.旅游交通等领域的通知场景.比如当应用有新功能或安全补丁时,系统将推送消息提醒用户及时更新:如果是航班出行类的应用,会发送最新的班次时 ...

  6. iOS中NSBundle使用小结

    bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,文本文件,属性列表,语言包,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle ...

  7. Maven的安装部署(不踩雷版)

    在idea中配置maven需注意maven版本和idea版本相匹配.本人使用idea版本为2020.3,jdk1.8,maven3.6.3可以与之相匹配. 一.下载maven maven下载官网地址: ...

  8. Idea启动多服务时的Dashboard展示

    1.提换.idea/workspace.xml文件中的RunDashboard标签 <component name="RunDashboard"> <option ...

  9. .NET云原生应用实践(二):Sticker微服务RESTful API的实现

    本章目标 完成数据访问层的基本设计 实现Sticker微服务的RESTful API 引言:应该使用ORM框架吗? 毋庸置疑,Sticker微服务需要访问数据库来管理"贴纸"(也就 ...

  10. 背靠AI,让AI当牛马,解决程序员的烦恼

    开篇问题? 作为程序员的你,写代码累吗?累!苦嘛?苦,想哭嘛?哭不出来. 还在为工作中繁重的编码任务.复杂的调试过程以及不断更新的技术栈而苦恼吗?这些挑战不仅消耗大量的时间和精力,还时常让人陷入思维的 ...