生信入门(七)——数据预处理1

生信入门(七)——数据预处理1


后面几节,将分别使用基本包和当前流行的 dplyr 包处理数据框,并介绍数据框的合并、长宽格式的转换、缺失值的处理、处理大型数据集的策略等操作。

一、用基本包处理数据框

加载epiDisplay包里的小型数据集Familydata

1.查看数据框中的内容

# BiocManager::install("epiDisplay")
library(epiDisplay)
data("Familydata")
ls()# 显示数据名
Familydata# 小型数据适用变量名查看所有数据
head(Familydata,5)# 查看数据前5行
tail(Familydata,7)# 查看数据后7行
names(Familydata)# 列出所有变量名
str(Familydata)#  查看数据框结构
attributes(Familydata)# 显示数据框属性的全部信息,输出一个列表
#用户可以修改和自定义属性(为第一个和最后一个变量定义标签)
attr(Familydata,"var.labels")[1]<-"Identification number"
attr(Familydata,"var.labels")[6]<-"Gender"
attributes(Familydata)$var.labels#	显示两个变量信息
des(Familydata)#	显示数据信息,不想要str,可以用des

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、选取数据库的子集

Familydata[,3]# 选择数据框的第三列
Familydata$ht#  提取一个变量
Familydata[1:3,c(3,4,6)]# 只显示变量ht,wt和sex的前三条记录
Familydata[1:3,c("ht","wt","sex")]# 另一种写法
Familydata[Familydata$sex=="F",]#索引可以是一个条件语句,注意逗号!!!
subset(Familydata,sex=="F")#  另一种选择子集的方法
subset(Familydata,sex=="F",select = c(ht,wt))#  选择女性中的变量ht和wt,subset只是选择一个子集显示,不会影响原来的数据框
sample.rows<-sample(1:nrow(Familydata),size=3,replace = FALSE)#在数据框中随机抽取一个大小为3的样本
sample.rows

在这里插入图片描述
在这里插入图片描述

3、将数据按照某个变量的值排序:order()

Familydata[order(Familydata$age),]# 将数据框Familydata以age从小到大显示
Familydata[order(Familydata$age,decreasing = TRUE),]# 将数据按照从大到小排序
Familydata[order(-Familydata$age),]#将age取反效果相同

在这里插入图片描述
在这里插入图片描述

4、查找和删除数据:duplicated()

duplicated(Familydata$code)# 检查该变量是否存在重复值
# 如果数据框的行数较多,逐一查看很麻烦,使用any()函数
any(duplicated(Familydata$code))
# 使用table,还可以的大重复的个数
table(duplicated(Familydata))

在这里插入图片描述

#复制源数据后将第2行添加在第12行
Familydata1<-Familydata
Familydata1[12,]<-Familydata[2,]
Familydata1
which(duplicated(Familydata1$code))#使用which()函数找到变量code重复值所在的行
unique.code.data<-Familydata1[!duplicated(Familydata1$code),]#删除重复的行
unique.code.data
identical(unique.code.data,Familydata)#查看两个对象是否一致

在这里插入图片描述

5、在数据框中添加和删除变量

Familydata$log10money<-log10(Familydata$money)#添加变量log10money
Familydata<-transform(Familydata,log10money=log10(money))#同样的效果
names(Familydata)

在这里插入图片描述

Familydata[,-7]#从数据框删除一个变量,删除第七列
# 以上命令只显示所需的子集,对数据库本身不会产生影响,下面命令会永久删除数据框中的变量
colnames(Familydata)
Familydata$log10money<-NULL
colnames(Familydata)

在这里插入图片描述

6、把数据框添加到搜索路径

在前面查看和使用数据框中的变量时,我们需要在变量名前面加上数据框名和符号 $。这种方式有时候会显得比较烦琐,尤其是数据框和变量的名字都很长的时候。
函数 attach( ) 或者函数 with( ) 可以用来简化代码。函数 attach( ) 可以将数据框添加到搜索路径中。

attach(Familydata)#将数据框添加到搜索路径
search()#查看搜索路径中的所有对象

在这里插入图片描述
数据框已经在搜索路径的第二个位置中了,而变量 age 又在该数据框里,所以现在可以直接使用变量 age

summary(age)#

在这里插入图片描述
把一个数据框放入搜索路径类似于使用函数 library( ) 加载一个包。调入搜索路径的数据框和加载的包都会被自动读入 R,并一直存放在内存中直至它们被移出(detach( ))。

使用函数 attach( ) 虽然会在输入代码时带来一些便利,但同时也会带来一些问题。例如,重复加载数据框可能会最终导致系统资源过度负荷。另外,如果全局环境中或多个数据框中有相同的变量名,容易使用户产生混淆。因此,有些 R 的使用者尽量避免使用函数 attach( ),而使用函数 with( )

# with的用法(以database中的infert为例)
infert#查看数据
with(infert,summary(age))

在这里插入图片描述
函数 with( ) 的局限性在于,对于多次使用数据框,我们必须重复使用函数 with( )。此外,赋值仅在此函数内部生效。

# 不忘将数据框从搜索路径移除
detach(Familydata)
search()

在这里插入图片描述
今日告一段落,明天见~

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子味的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值