前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言专题2-数据框

R语言专题2-数据框

原创
作者头像
生信汪一昂
发布2023-09-16 17:19:26
2120
发布2023-09-16 17:19:26
举报
文章被收录于专栏:生信学习之路生信学习之路
代码语言:text
复制
#学习这部分内容之前先加载这个包哦
library(dplyr) 

#这边随便用内置数据生成一个数据框
test <- iris[c(1:2,51:52,101:102),]
#去掉行名,这一步的目的是为了调整编号哦,大家可以看一下不去掉会怎么样
rownames(test) =NULL 
test
代码语言:txt
复制
##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1          5.1         3.5          1.4         0.2     setosa
## 2          4.9         3.0          1.4         0.2     setosa
## 3          7.0         3.2          4.7         1.4 versicolor
## 4          6.4         3.2          4.5         1.5 versicolor
## 5          6.3         3.3          6.0         2.5  virginica
## 6          5.8         2.7          5.1         1.9  virginica

专题2.数据框

1.arrange()排序

代码语言:text
复制
# arrange()函数默认是升序,调整某一列的数值排序,会对整个数据框进行相应调整
arrange(test,Sepal.Length)
代码语言:txt
复制
##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1          4.9         3.0          1.4         0.2     setosa
## 2          5.1         3.5          1.4         0.2     setosa
## 3          5.8         2.7          5.1         1.9  virginica
## 4          6.3         3.3          6.0         2.5  virginica
## 5          6.4         3.2          4.5         1.5 versicolor
## 6          7.0         3.2          4.7         1.4 versicolor
代码语言:text
复制
# arrange()降序
arrange(test,desc(Sepal.Length))
代码语言:txt
复制
##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1          7.0         3.2          4.7         1.4 versicolor
## 2          6.4         3.2          4.5         1.5 versicolor
## 3          6.3         3.3          6.0         2.5  virginica
## 4          5.8         2.7          5.1         1.9  virginica
## 5          5.1         3.5          1.4         0.2     setosa
## 6          4.9         3.0          1.4         0.2     setosa

2.distinct()去重复

代码语言:text
复制
# distinct,数据框按照某一列去重复
distinct(test,Species) # 该函数默认只保留去重复那一列
代码语言:txt
复制
##      Species
## 1     setosa
## 2 versicolor
## 3  virginica
代码语言:text
复制
# 若想保留所有列可以通过修改.keep_all这个参数
distinct(test,Species,.keep_all = T) 
代码语言:txt
复制
##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1          5.1         3.5          1.4         0.2     setosa
## 2          7.0         3.2          4.7         1.4 versicolor
## 3          6.3         3.3          6.0         2.5  virginica

3.mutate()数据框新增一列

代码语言:text
复制
# 这边比较简单直接看代码和图应该就能知道其表达
# 若想保存这个操作需要赋值哦
x = mutate(test,new = Sepal.Length * Sepal.Width);x
代码语言:txt
复制
##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species   new
## 1          5.1         3.5          1.4         0.2     setosa 17.85
## 2          4.9         3.0          1.4         0.2     setosa 14.70
## 3          7.0         3.2          4.7         1.4 versicolor 22.40
## 4          6.4         3.2          4.5         1.5 versicolor 20.48
## 5          6.3         3.3          6.0         2.5  virginica 20.79
## 6          5.8         2.7          5.1         1.9  virginica 15.66

补充1:筛选列-select()、行-filter

代码语言:text
复制
# 由于data.frame[]中括号就能做到这些事情,所以这两个函数就比较鸡肋
# 仅演示一些基础操作
select(test,2:3)
代码语言:txt
复制
##   Sepal.Width Petal.Length
## 1         3.5          1.4
## 2         3.0          1.4
## 3         3.2          4.7
## 4         3.2          4.5
## 5         3.3          6.0
## 6         2.7          5.1
代码语言:text
复制
select(test,-5)
代码语言:txt
复制
##   Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1          5.1         3.5          1.4         0.2
## 2          4.9         3.0          1.4         0.2
## 3          7.0         3.2          4.7         1.4
## 4          6.4         3.2          4.5         1.5
## 5          6.3         3.3          6.0         2.5
## 6          5.8         2.7          5.1         1.9
代码语言:text
复制
filter(test,Sepal.Length > 6) # filter后面只能是逻辑值
代码语言:txt
复制
##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1          7.0         3.2          4.7         1.4 versicolor
## 2          6.4         3.2          4.5         1.5 versicolor
## 3          6.3         3.3          6.0         2.5  virginica

补充2:连续的步骤

代码语言:text
复制
# 1.多次赋值,产生多个中间的变量
# 这种代码对于小白很友好,易懂且出了问题也不难检查
x1 = select(iris,-5)
x2 = as.matrix(x1)
x3 = head(x2,50)
pheatmap::pheatmap(x3)
代码语言:text
复制
# 2.嵌套式代码
pheatmap::pheatmap(head(as.matrix(select(iris,-5)),50))
代码语言:text
复制
# 3.利用管道符号 %>%
# 管道符号的作用:将符号前所有代码的计算结果,传递给符号后的函数并作为其第一个参数
iris %>%
  select(-5) %>%
  as.matrix() %>%
  head(50) %>%
  pheatmap::pheatmap()
代码语言:text
复制
# 1、2、3等价,根据实际情况需要自行选择即可

引用自生信技能树

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 专题2.数据框
    • 1.arrange()排序
      • 2.distinct()去重复
        • 3.mutate()数据框新增一列
          • 补充1:筛选列-select()、行-filter
            • 补充2:连续的步骤
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档