r语言中mpg数据_零基础生信入门第一课——R语言数据清洗,超详细讲解,建议收藏!...
小伙伴们大家好!今天我要用一篇推文精要概括数据清洗中的最基本最关键的步骤,对于零基础的学员一定会有很大收获!数据清洗是完成一篇生信文章最基本但也是最终要的准备工作,如果不会数据清洗,就要错过很多优质数据集,那文章的质量就会大打折扣~当然这一步也是最费时间费脑子的。话不多说,我们进入正题。
我们熟知的生信分析中,少不了TCGA、GEO、Oncomine等数据库的数据集应用,这些大型综合性数据库的数据大多经过统一的处理,这使得我们应用这些数据集得出的结论更加有说服力。因此,这些数据集相关的研究就不计其数,如果想在数据集上找创新是难中之难,可是不创新又怎样发高分文章呢?数据集很多,但能够出成果的少之又少,好不容易找到一个数据集,原始数据杂乱无章,无从下手,成为了众多生信小白很难跨越的一道鸿沟。
这就体现了R语言数据清洗的重要性。说到R语言,大家可能下意识就是差异分析、跑代码出图等等。然而,简单的分析出图只是R语言的强大功能的冰山一角。R是进行数据运算、清洗、汇总及生成概率统计等数据处理的一个绝佳选择。
数据准备的最常见的应用包括数据的抽取、清洗、转换和集成,常常占据了70%左右的工作量。并且很多数据集即便而在数据准备的过程中,数据质量差又是最常见而且令人头痛的问题。那么数据质量的评价标准又是怎么样的呢?
1.数据质量评价的12个维度
(1)数据规范( Data specification):对数据标准、数据模型等规定测量标准。
(2)数据完整性准则( Data integrity fundamentals)。
(3)重复( Duplication):对存在于系统内或系统间的特定字段、记录或数据集意外重复的测量标准。
(4)准确性( Accuracy):对数据内容正确性进行测量的标准;
(5)一致性和同步( Consistency and synchronization):对各种不同的数据信息等价程度的测量。
(6)及时性和可用性( Timeliness and availability):在预期时段内数据对特定应用的及时程度和可用程度的测量标准。
(7)易用性和可维护性( Ease of use and maintainability):对数据可被访问,使用程度,以及数据能被更新、维护和管理程度的测量标准。
(8)数据覆盖( Data coverage):相对于数据总体或全体相关对象数据的可用性和全面性的测量标准。
(9)表达质量( Presentation quality):如何进行有效信息表达以及如何从用户中收集信息的测量标准。
(10)可理解性,相关性和可信度( Perception, relevance and trust)。
(11)数据衰变( Data decay):对数据负面变化率的测量标准。
(12)效用性 ( Transactability):数据产生期望业务交易或结果程度的测量标准。
在评估项目数据质量过程中,需先选取几个合适的数据质量维度,再针对每个所选维度,制定评估方案,选择合适的评估手段进行测量,最后合并和分析所有质量评估结果。那我们需要对数据进行什么样的处理呢?
2.数据规范化处理的8个关键步骤① 缺失值处理
② 重复数据检测
③ 异常数据处理
④ 逻辑错误检测
⑥ 不一致数据
⑦ 相关性分析(剔除与问题不相关的冗余的属性)
⑧ 数据变换(标准化,归一化、线性化等)
一般来说,在获得了原始数据之后,不能直接开始进行统计分析等操作。
最后我们需要一个最基本的结果:每个变量各占一列;每个观测值各占一行;每个表格或者文件只储存一种观测值的数据!
3.R语言数据处理及实例应用
plyr包ddply函数
我先推荐一个最常用也是最好用的函数——ddply!这个函数位于plyr包内,用于对data.frame进行分组统计,是用于数据清洗和整理常用的函数,比内置的base包中的类似功能的速度快,且可读性强。plyr包对于R中数据的分块处理非常好用,相对于xapply系列函数,有更为宽泛的数据适用和数据分割能力,也能对分块数据进行多重处理。
R包参数如下
ddply(
.data,
.variables,
.fun = NULL,
...,
.progress = "none",
.inform = FALSE,
.drop = TRUE,
.parallel = FALSE,
.paropts = NULL
)
函数各部分解析如下:
① (.data):原始数据集;
② (.variables):按照某个或几个变量对数据集分割;
③(.fun):具体执行操作的函数,对分割后的每一个子数据集,调用该函数
④ 其他参数可选,主要函数有:%>%(管道符,可进行多步操作),filter(筛选行),select(筛选列),arrange(排序),group_by(分组),mutate(变形,增加新的列),summarise(汇总),length(对列进行调整)等等
小伙伴们可以多多挖掘。
下面我们就通过官方示例进行演示:
函数各部分解析如下:
# 通过两个变量来总结数据集
dfx
group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
sex = sample(c("M", "F"), size = 29, replace = TRUE),
age = runif(n = 29, min = 18, max = 54)
)
# “group” and “sex” 两个变量可以通过'.' 直接引用
ddply(dfx, .(group, sex), summarize,
mean = round(mean(age), 2),
sd = round(sd(age), 2))
# 使用.variables公式的示例
ddply(baseball[1:100,], ~ year, nrow)
# 引用两个功能; nrow 和 ncol
ddply(baseball, .(lg), c("nrow", "ncol"))
# 计算每年的平均分
rbi
mean_rbi = mean(rbi, na.rm = TRUE))
# 绘制结果折线图
plot(mean_rbi ~ year, type = "l", data = rbi)
# 根据每个对象的开始年份(id)设置新的变量
base2
career_year = year - min(year) + 1
)
dplyr包
dplyr包的作者是著名的ggplot2包的Hadley Wickham。dplyr包主要用于数据清洗和整理,主要功能有:行选择、列选择、统计汇总、窗口函数、数据框交集等是非常高效、友好的数据处理包,主要有以下几个函数:① 选择:select()
② 筛选:filter()
③ 排序:arrange()
④ 分组:group_by()
⑤ 汇总:summarise()
⑥ 变形:mutate()
下面我就为大家介绍其中几个函数的实例应用。
> library(dplyr)
> data(mtcars)
> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
> #1.按行筛选:filter(),按给定的逻辑判断筛选出符合要求的子数据集, 类似于 subset() 函数,如:
> filter(mtcars, mpg>=22)
mpg cyl disp hp drat wt qsec vs am gear carb
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
> filter(mtcars, cyl == 4 | gear == 3)
mpg cyl disp hp drat wt qsec vs am gear carb
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
> #2.按列筛选:select(), 用列名作参数来选择子数据集。dplyr包中提供了些特殊功能的函数与select函数结合使用, 如:
> data(iris)
> iris = tbl_df(iris)
> #选取变量名前缀包含Petal的列
> select(iris, starts_with("Petal"))
# A tibble: 150 x 2
Petal.Length Petal.Width
1 1.4 0.2
2 1.4 0.2
3 1.3 0.2
# ... with 140 more rows
> #选取变量名前缀不包含Petal的列
> select(iris, -starts_with("Petal"))
# A tibble: 150 x 3
Sepal.Length Sepal.Width Species
1 5.1 3.5 setosa
2 4.9 3 setosa
3 4.7 3.2 setosa
# ... with 140 more rows
> #3.mutate变量变形: mutate(), 可以对数据框中已有的变量进行操作或者增加变量
> #新增列
> mtcars %>% mutate(cyl2 = cyl * 2,cyl4 = cyl2 * 2)
mpg cyl disp hp drat wt qsec vs am gear carb cyl2 cyl4
1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 12 24
2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 12 24
3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 8 16
> #删除列
> mtcars %>% mutate(mpg = NULL,disp = disp * 0.0163871)
cyl disp hp drat wt qsec vs am gear carb
1 6 2.621936 110 3.90 2.620 16.46 0 1 4 4
2 6 2.621936 110 3.90 2.875 17.02 0 1 4 4
3 4 1.769807 93 3.85 2.320 18.61 1 1 4 1
> #4.排序函数: arrange(), 这里需要注意排序与排名的区别,如:
> #按给定的列名依次对行进行排序
> arrange(mtcars, mpg)
mpg cyl disp hp drat wt qsec vs am gear carb
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
> arrange(mtcars, mpg,disp)
mpg cyl disp hp drat wt qsec vs am gear carb
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
常见的数据变换函数
① abs(x) 绝对值
② sqrt(x) 开根号
③ round(x,digits=n) 四舍五入,例:round(3.475,digits=2) = 3.48
④ cos(x), sin(x) etc.三角变换
⑤ log(x) 对数变换
⑥ log2(x), log10(x) 以2、10为底的对数变换
⑦ exp(x) 指数变换
小伙伴们是不是对数据清洗和处理有了一个明确的思维框架呢?照着这个方向去把“房子”逐步搭建起来,熟练后你会发现数据清洗并没有这么复杂啦!
参考文献
Hadley Wickham (2011). The Split-Apply-Combine Strategy for Data Analysis. Journal of Statistical Software, 40(1), 1-29. http://www.jstatsoft.org/v40/i01/.
欢迎大家关注解螺旋生信频道-挑圈联靠公号~—END—
转载请注明:解螺旋·临床医生科研成长平台
r语言中mpg数据_零基础生信入门第一课——R语言数据清洗,超详细讲解,建议收藏!...相关推荐
- r语言中mpg数据_R语言数据筛选整理包dplyr
dplyr软件包是R中功能最强大,最受欢迎的软件包之一.该软件包由最受欢迎的R程序员Hadley Wickham编写,他编写了许多有用的R软件包,如ggplot2,tidyr等.本文包括一些示例和如何 ...
- r语言中mpg数据_R语言常用的数据处理的包(1)
在R中有很多的内置函数,比如transform().rbind().cbind()等函数,这些函数我们可以直接使用,除此之外,还有常见的几种包在处理数据的时候非常好用. dplyr包 dplyr包是H ...
- r语言中mpg数据_R语言数据实战 | 统计检验
原标题:R语言数据实战 | 统计检验 1.单个总体均值的t检验 1. 什么是检验? 检验(test)是统计学中最重要的概念之一,在科学研究和实际业务中都有着广泛的应用.用一句话来概括就是:人们希望通过 ...
- r语言中mpg数据_R语言数据分析系列之五
R语言数据分析系列之五 本节来讨论一下R语言的基本图形展示,先来看一张效果图吧. 这是一张用R语言生成的,虚拟的wordcloud云图,详细实现细节请參见我的github项目:https://gith ...
- 有c语言基础学python容易吗_零基础学Python之前需要学c语言吗
Python本身是比较适合作为入门编程语言来学习的,一方面Python的语法结构比较简单清晰,实验也相对比较容易完成,这会逐渐增强初学者的学习信心,另一方面Python属于全场景编程语言,未来在很多领 ...
- 慕课网python零基础入门教程_零基础Python爬虫入门学习一之综述
原标题:零基础Python爬虫入门学习一之综述 大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章 ...
- micropython视频_零基础如何优雅入门“网红”Python?小白必看的MicroPython视频合集:从入门到精通!...
零基础如何优雅入门"网红"Python?小白必看的MicroPython视频合集:从入门到精通! 若问时下最火的一门编程语言是什么?答案一定是Python. 就连高考都开始考Pyt ...
- response_json是什么类型数据_零基础学VBA编程第5课:什么是数据类型?
每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel 嗨,大家好,我是星光,今天咱们来继续学习VBA编程. 在 ...
- response_json是什么类型数据_零基础学VBA编程05:什么是数据类型?
每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel 嗨,大家好,我是星光,今天咱们来继续学习VBA编程. 在 ...
最新文章
- hibernate笔记(三) Hibernate标识符属性(主键)生成策略全析
- 脚本中的关于‘/xff‘字符记录
- Soul网关发布2.1.X之后,它到底有多方便?
- design php 如何使用ant_Ant Design Pro初探—添加面包屑
- 【英语学习】【Daily English】U06 Shopping L04 I like everything aboutit but the price.
- ASP.NET Core:使用IdentityServer构建可靠的身份验证和授权系统
- (转)C 语言高效编程的几招
- WINDOWS环境下RABBITMQ的启动和停止命令
- hibernate annotations @Entity hql XX not mapped
- 华为 荣耀 等手机解锁BootLoader
- Birt分类汇总报表(CUBES)空值转换为0
- html中如何使用input表单隐藏域?
- 易基因 - 外泌体let-7d-3p和miR-30d-5p作为宫颈癌及其癌前病变无创筛查的诊断标志物|早期筛查
- 有些路,只能一个人走。
- Linux应用开发5 信号(软中断,处理异步请求,进程间通讯)
- 灵活的Vue组件——原来这么简单
- std::shared_ptr 详解
- Connections could not be acquired from the underlying database!
- Q2营收增长创下3年来最大涨幅,IBM这头大象要在云风口上跳舞?
- Packet Tracer - 交换机和终端设备的基本配置
热门文章
- PEB-------------模块链表Ldr
- goldfish_pipe分析
- 【Arduino教程】GP2Y1014AU粉尘传感器原理分析及使用
- Tplink服务器停止响应,新买的tp-link变砖了,修复时候没有说按p停止
- 服务器硬件告警,一步一步配置 Dell OME 监控 Dell 服务器硬件报警(示例代码)
- PHP图片上传水印代码,php上传图片并打上透明水印的代码
- 经典教材--C语言程序设计(第五版)pdf
- 潘凯:C++对象布局及多态实现的探索(五)
- Theano学习四:单层简单线性模型识别手写字
- 几行代码搞定java生成解析二维码功能