1 NaN
R中的无定义数用NaN表示,即“Not a Number(非数)”。
不过在R中,R实际上是把NaN视作一个数的,当其参与运算时,返回结果总是NaN。我们可以使用isnan()函数来检测计算结果有无定义,但是需要注意的是,对于NaN而言,isfinite()和isinfinite()都会返回FALSE。
2 NA
NA表示缺失值,即“Missing value”,是“not available”的缩写
3 Inf
R中的无穷大用Inf表示(即Infinity,无穷大),负无穷表示为-Inf。
要检查一个数是否为无穷,可以使用isfinite()或者isinfinite()函数
3 NULL
R语言中,NA代表位置上的值为空,NULL代表连位置都没有,变量为空,其长度为0,表明“空无一物”
将两个数据进行除法运算
而log2_foldchange就是我们需要的数据,发现里面有许多 NaN、 -Inf 、Inf ,想办法进行数据清洗。
都到这一步了,再绘制两个图形玩玩:
变量可归结为名义型、有序型或连续型变量。名义型变量是没有顺序之分的类别变量。类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。因子在R中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现。因子(factor)是R语言中比较特殊的一个数据类型, 它是一个用于存储 的类型,举个例子,从性别上,可以把人分为:男人和女人,从年龄上划分,又可以把人分为:未成年人(<18岁),成年人(>=18)。
R把表示分类的数据称为因子,因子的行为有时像字符串,有时像整数。因子是一个向量,通常情况下,每个元素都是字符类型,也有其他数据类型的元素。因子具有因子水平(Levels),用于限制因子的元素的取值范围,R强制:因子水平是字符类型,因子的元素只能从因子水平中取值,这意味着,因子的每个元素要么是因子水平中的字符(或转换为其他数据类型),要么是缺失值,这是因子的约束,是语法上的规则。
通常情况下,在创建数据框变量时,R隐式把数据类型为字符的列创建为因子,这是因为R会把文本类型默认为类别数据,并自动转换为因子。前面我们在讲数据框时,就有提到。
通过class()函数检查gender列的类,结果是因子类型,而不是字符向量。
可以通过factor()函数创建因子,factor()函数的第一个参数必须是字符向量,通过levels参数显式设置因子水平。
参数注释:
例如,因子sex的值是向量c('f','m','f','f','m'),因子水平是c('f','m')
因子水平规定了 因子取值的范围 ,每一个因子,都包含因子水平的信息,例如,打印gender列,可以看到因子的元素和水平:
该因子中的每个值都是一个字符串,它们被限制为“f”、“m”和缺失值(NA)。如果把其他字符串添加到gender列中,R会抛出警告消息,并把错误赋值的元素设置为NA,例如:
因子水平,可以通过函数levels(factor)来查看:
水平的级数,相当于level的长度,可以由nlevels函数查询到:
使用factor函数创建因子,可以使用labels参数为每个因子水平添加标签,labels参数的字符顺序,要和levels参数的字符顺序保持一致,例如:
通常情况下,因子一般是无序的,这可以通过isordered()函数来验证:
因子的顺序,实际上是指因子水平的顺序,有序因子的因子水平是有序的。在特殊情况下,有些因子的水平在语义上大于或小于其他水平,R支持按顺序排列的因子,使用ordered函数,或通过给factor函数传入order=TRUE参数,把无序因子转换为有序的因子。
ordered()函数不能指定特定因子水平的顺序,通常情况下,因子中先出现的水平小于后出现的水平。例如,通过ordered函数把sex因子转换为有序的因子:
通过factor函数创建有序因子,通过levels指定因子的顺序。
因子的顺序,其实是因子水平的顺序,我们可以通过levels,使现有的因子按照指定的因子水平来排序。
例如,把heights数据框的gender,按照指定的levels,转换成有序因子:
在数据清理时,可能需要去掉与因子水平对应的数据,通常情况下,需要删除未使用的因子水平,可以使用droplevels函数,它接受因子或是数据框作为参数。
如果x是数据框,那么把数据框中未使用的因子删除。
在数据清理中,有时需要把因子转换为字符,通常情况下,使用ascharacter()函数,把因子转换为字符串:
使用asnumeric()或asinteger()函数可以把因子转换成对应的整数
函数 cut() 能够把数值变量切成不同的块,然后返回一个因子
参数注释:
例如,把身高数据,按照指定的切割点向量分割:
当需要把因子转换为有序因子时,要注意因子水平的顺序
转自医学方
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第一列的变量名) 和 nrgroup(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等),个人浏览下来感觉这个最容易理解和掌握,其他包的功能有兴趣的可以再自行挖掘对比。
原文链接: >以下扩展包可以读取xlsx文件: CRAN - Package xlsx awalker89/openxlsx · GitHub CRAN - Package RODBC 通过 odbcConnectExcel2007 连接到xlsx表格,然后通过SQL选择表格中的数据 hadley/readxl · GitHub 最新的一个扩展包,可以跨平台、无依赖地读取xls, xlsx中的表格数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)