数据框进阶
2021-10-12 本文已影响0人
小胡同学ime
数据框的两种显示形式
- 在environment里面直接点名字,查看预览视图,相当于View(df)
- 控制台显示形式(纯文本)
数据框进阶
- 行数较多的数据框可以截取前/后几行查看
head(iris) #默认截取前6行
tail(iris) #默认截取后6行
head(iris, 3) #截取第3行
- 行列数都多的数据框可取前几行前几列查看
不经过赋值,只是输出、查看,赋值后才会发生转变
iris[1:3, 1:3] #看iris数据前三行,前三列
- 查看每一列的数据类型和具体内容
str()
> str(df)
'data.frame': 3 obs. of 4 variables: #这是一个名df的数据框,3行4列
$ gene: chr "gene1" "gene2" "gene3" # $-列名:数据类型-前几个数据
$ sam : chr "sample1" "sample2" "sample3"
$ exp : num 12 23 50
$ abc : num 23 15 37
基础学习默认不要转成因子,避免因子带来的麻烦
options(stringsAsFactors = F)
4. 去除含有缺失值的行
片甲不留
na.omit(df)
image.png
*仅按照某一列来去除缺失值、缺失值替换:tidyr包
5. 两个表格的连接
-
按列连接:cbind 行数必须相同
-
按行连接:rbind 列数相同
-
智能连接:merge(test1,test2,by=“name”) 需共同列名(“name”)
列名不同时,用merge如何处理
merge(test1, test3, by.x = "name", by.y = "NAME")
***6\. 如果列名顺序错乱,如何按照指定顺序重排?***
[数据框列的顺序错乱,如何重排](https://www.jianshu.com/p/09a22a1cdcd1)
交集、并集、补集、全集等,参考dplyr包
矩阵的新建和取子集
m <- matrix(1:9, nrow = 3)。#只需要确定行or列其中一个元素即可排列
矩阵不支持 $
矩阵的转置和转换
t(m) #横纵向变化
as.data.frame(m) #转换为数据框
矩阵可视化(画热图)
pheatmap::pheatmap(m) #默认聚类
pheatmap::pheatmap(m, cluster_cols = F, cluster_rows = F) #不要聚类
列表新建和取子集
i <- list(m = matrix(1:9, nrow = 3),
df = data.frame(gene = paste0("gene",1:3), sam = paste0("sam", 4:6)),
x = c(1,3,5))
i$m
i$df
i$x
i[[2]]
#m、df、x都是赋予给元素的名字
image.png
删除变量
rm(l) #删除l这个变量
rm(df,m) #删除df,m等多个变量
rm(list = ls()) #删除全部变量
*list = ls() #列举列表中所有的变量
清空控制台
ctrl + l
元素的名字 - names()
元素 可命名,用函数names(),
可以根据名字提取子集,
向量、数据框、列表通用。命名并不影响数据的类型
match 有大用处 !!
colnames(y) = x$ID[match(colnames(y), x$file_name)]