前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Day6——R包

Day6——R包

原创
作者头像
用户10859034
修改2023-12-03 00:31:01
1360
修改2023-12-03 00:31:01
举报
文章被收录于专栏:漫漫生信路漫漫生信路

思维导图

思维导图
思维导图

安装和加载R包

以dplyr函数为例

代码语言:txt
复制
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) 
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") 
install.packages("dplyr")
library(dplyr)

dplyr五个基础函数

示例数据:

代码语言:txt
复制
test <- iris[c(1:2,51:52,101:102),]
代码语言: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
##51           7.0         3.2          4.7         1.4 versicolor
##52           6.4         3.2          4.5         1.5 versicolor
##101          6.3         3.3          6.0         2.5  virginica
##102          5.8         2.7          5.1         1.9  virginica

数据解释: 鸢尾花(iris)是数据挖掘常用到的一个数据集,包含150种鸢尾花的信息,每50种取自三个鸢尾花种之一(setosa,versicolour或virginica)。每个花的特征用下面的5种属性描述萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)、类(Species)。

mutate()#新增列

代码语言:txt
复制
mutate(test, new = Sepal.Length * Sepal.Width)
#新增一列数据为Sepal.Length与Sepal.Width的积

select()#按列筛选

按列号筛选

代码语言:txt
复制
select(test,1)#选择第一列
select(test,c(1,5))#选择第1和第5列

按列名筛选

代码语言:txt
复制
select(test, Petal.Length, Petal.Width)
代码语言:txt
复制
vars <- c("Petal.Length", "Petal.Width")
select(test, one_of(vars))

#选择字符向量中的列,select中不能直接使用字符向量筛选,需要使用one_of函数 R语言中使用vars参数指定数据框中需要分析的字段索引范围在R语言中,我们经常需要对数据框进行分析和处理。数据框是一种二维的表格结构,其中包含了多个变量(字段)和观测值(行)。在进行数据分析时,有时我们只对数据框中的特定字段感兴趣,而不需要使用所有的字段。这时,我们可以使用vars参数来指定需要分析的字段索引范围,从而提取出感兴趣的字段进行后续操作。 vars参数是dply包中select函数的一个参数,它允许我们通过指定字段的索引范围来选择需要的字段。索引范围可以是一个连续的整数向量,也可以是一个布尔向量。

filter()#筛选行

代码语言:txt
复制
filter(test, Species == "setosa")
#选择物种名为setosa的行
代码语言:txt
复制
filter(test, Species == "setosa"&Sepal.Length > 5 )
#选择Species == "setosa"并且Sepal.Length大于5的行
代码语言:txt
复制
filter(test, Species %in% c("setosa","versicolor"))
#选择物种名为setosa","versicolor的行

#%in%判断前面一个向量内的元素是否在后面一个向量中,返回布尔值。

arrange()#按某1列或某几列对整个表格进行排序

代码语言:txt
复制
arrange(test, Sepal.Length)#默认从小到大排序
代码语言:txt
复制
arrange(test, desc(Sepal.Length))#用desc从大到小排序

summarise():#汇总

对数据进行汇总操作,结合group_by使用实用性强

代码语言:txt
复制
summarise(test, mean(Sepal.Length), sd(Sepal.Length))
# 计算Sepal.Length的平均值和标准差
代码语言:txt
复制
group_by(test, Species)#先按照Species分组
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))#计算每组Sepal.Length的平均值和标准差

dplyr两个实用技能

管道操作 %>%

加载任意一个tidyverse包即可用管道符号

#%>% (向右操作符,forward-pipe operator),就是把左侧准备的数据或表达式,传递给右侧的函数调用或表达式进行运行,可以连续操作就像一个链条一样。

关系图
关系图
https://zhuanlan.zhihu.com/p/339107871

代码语言:txt
复制
test %>% 
  group_by(Species) %>% 
  summarise(mean(Sepal.Length), sd(Sepal.Length))

count统计某列的unique值

计数函数计算数据集中列唯一值的数量

代码语言:txt
复制
count(test,Species)
##     Species n
##1     setosa 2
##2 versicolor 2
##3  virginica 2

dplyr处理关系数据

可参考https://www.jianshu.com/p/1f4c7bfed3d4

內连inner_join

代码语言:txt
复制
inner_join(test1, test2, by = "x")
#保留同时存在于两个表中的观测

左连left_join

代码语言:txt
复制
left_join(test1, test2, by = 'x')
#保留 test1 中的所有观测

全连full_join

代码语言:txt
复制
full_join( test1, test2, by = 'x')
#保留test1和test2 中的所有观测

半连接semi_join

代码语言:txt
复制
semi_join(x = test1, y = test2, by = 'x')
#返回能够与y表匹配的x表所有记录

反连接anti_join

代码语言:txt
复制
anti_join(x = test2, y = test1, by = 'x')
#返回无法与y表匹配的x表的所记录

简单合并

bind_rows()函数需要两个表格列数相同, 而bind_cols()函数则需要两个数据框有相同的行数 示例数据:

代码语言:txt
复制
bind_rows(test1, test2)
代码语言:txt
复制
bind_cols(test1, test3)

以下示例数据来自生信星球

代码语言:txt
复制
test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40))
test1
##   x  y
## 1 1 10
## 2 2 20
## 3 3 30
## 4 4 40
test2 <- data.frame(x = c(5,6), y = c(50,60))
test2
##   x  y
## 1 5 50
## 2 6 60
test3 <- data.frame(z = c(100,200,300,400))
test3
##     z
## 1 100
## 2 200
## 3 300
## 4 400
bind_rows(test1, test2)
##   x  y
## 1 1 10
## 2 2 20
## 3 3 30
## 4 4 40
## 5 5 50
## 6 6 60
bind_cols(test1, test3)
##   x  y   z
## 1 1 10 100
## 2 2 20 200
## 3 3 30 300
## 4 4 40 400

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思维导图
  • 安装和加载R包
  • dplyr五个基础函数
    • mutate()#新增列
      • select()#按列筛选
        • 按列号筛选
        • 按列名筛选
      • filter()#筛选行
        • arrange()#按某1列或某几列对整个表格进行排序
          • summarise():#汇总
          • dplyr两个实用技能
            • 管道操作 %>%
              • count统计某列的unique值
              • dplyr处理关系数据
                • 內连inner_join
                  • 左连left_join
                    • 全连full_join
                      • 半连接semi_join
                        • 反连接anti_join
                          • 简单合并
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档