专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生信菜鸟团  ·  基因组数据在精准医学中扮演什么角色 ·  昨天  
BioArt  ·  Science | ... ·  2 天前  
生物学霸  ·  中国科学院:做好 2025 年院士增选工作 ·  2 天前  
生物学霸  ·  蒲慕明院士:物理学出身的神经科学家 ·  3 天前  
生信人  ·  神经内分泌:聚焦难治性肿瘤 ·  4 天前  
51好读  ›  专栏  ›  生信菜鸟团

R 机器学习 | 数据预处理

生信菜鸟团  · 公众号  · 生物  · 2021-02-07 17:00

正文

本文为 机器学习实战 | 数据预处理(基于 Python) 的姊妹篇 R 语言实现。

1. 变量名转换

转换大小写:使用 toupper() tolower() 函数 去除特殊符号,例如 . ,空格等:可用 gsub() 进行替换或 strsplit() 根据字符分割并提取字符串。

2. 数值离散化

所谓数值离散化就是把连续型数据转变成离散数据,比如把连续的收入值分为 $0~$10000、$10001~$25000、$25001~$50000、$50001~$75000、$75001~$100000 和 $100001~$150000。使用 cut() 函数可以很方便地进行这类操作。

cut(x, breaks, labels = NULL,     include.lowest = F, right = T, dig.lab = 3,    ordered_result = F)

x :数值向量 breaks :指定分割点的数量的整数,或者制定分割点位置的向量 labels :输出因子水平标签 include.lowest :表明临界点是否包含在内 right :表示区间是否左开右闭(当right = F,区间左闭右开) dig.lab :当产生标签时,标签有效数字 ordered_results :返还值是否转换成有序因子

3. 日期处理

可用 lubridate 包处理日期和时间数据。

解析日期与时间

lubridate 包的 ymd() 系列函数来读取日期数据。 y m d 分别对应年、月和日。读取日期时,根据日期时间的元素顺序,选择相应的函数。例如,在下面的日期中,月份在首,其次是日,然后是年。所以用 mdy() 函数:

> mdy("12-01-2010")[1] "2010-12-01 UTC"

要是顺序是日月年,那就得用 dmy() 函数:

> dmy




    
("12-01-2010")[1] "2010-01-12 UTC"

当然也有 ydm() 函数等等。

这些函数会自动识别日期中的分隔符,包括: - / . 和 ``(无分隔符)。

操作日期与时间

每个日期时间都是不同元素的组合,我们可调用不同的函数来提取对应信息。

4. 对分类数据进行编码

可用 car 包的 recode 函数将数值或者字符向量、factor 变量重新编码。

recode(var, recodes, as.factor, as.numeric=TRUE, levels)

var :为数值向量,字符向量或者 factor 变量 recodes :为设定重新编码规则的字符串 as.factor :如果 var 是一个 factor,则默认为TRUE,否则为 FALSE as.numeric :默认为 TRUE,当 as.factor = False 时输出结果指定为数字 levels :指定新的编码分组的顺序(默认是按照分组名称排序)

xrep(1:3,3)x## [1] 1 2 3 1 2 3 1 2 3recode(x, "c(1,2)='A';     else='B'")## [1] "A" "A" "B" "A" "A" "B" "A" "A" "B"Recode(x, "1:2='A'; 3='B'")## [1] "A" "A" "B" "A" "A" "B" "A" "A" "B"

5. 合并数据集

可用 merge() cbind() rbind() 来合并数据集。

merge() :根据列名合并数据集

merge




    
(x,y,by = , by.x = , by.y = , all = , all.x = , all.y = ,...)

x :第一个数据框 y :第二个数据框 by , by.x , by.y :指定两个数据框中匹配列名称。默认使用两个数据框中相同列名称 all , all.x , all.y :指定合并类型的逻辑值。

另外还有, cbind() 根据列合并数据集以及 rbind() 根据行合并数据集,当然也可以用 dplyr 中的 join 等等。

6. 使用 dplyr 包进行数据操作

dplyr 也是我们常用于处理数据框的工具,例如:

filter() :按行筛选样本 select() :按列选择变量 arrange() :按给定的列名依次对行进行排序 mutate() transmute() :根据一个或多个变量生成新变量或重定义已有变量。 mutate() 的返回结果会保留原有变量,而 transmute() 则只返回新变量。 distinct :去重,仅返回无重复的行

7. 处理缺失数据

填充缺失值

可用 e1071 包中的 impute() 函数填充缺失值:

impute(x, what = c("median", "mean"))

what="median" 表示用对应列的中位数填充; what="mean" 表示用对应列的平均值填充。

impute() 返回的是一个矩阵,而不是一个数据框。所以我们必须多加一步,将结果转换回数据框的形式。







请到「今天看啥」查看全文