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

Day6——R包的学习

原创
作者头像
掩扉先生
修改2023-10-25 23:17:54
1620
修改2023-10-25 23:17:54
举报
文章被收录于专栏:R学习之路R学习之路

R包:R包R包,R语言函数打的包

大纲
大纲

* *************

镜像设置

不优解:

菜单栏-Tools-Packages-Primary CRAN repository-选择国内镜像

PLUS:

代码语言:txt
复制
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #对应清华源
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #对应中科大源
  • 缺陷:每次都需要重新设置

最优解:

代码语言:txt
复制
file.edit('~/.Rprofile')
创建文件后,粘贴PLUS的代码
创建文件后,粘贴PLUS的代码

然后,保存该文件并重启

完成后检查一下

代码语言:txt
复制
options()$repos
options()$BioC_mirror

安装R包

根据包的来源选择:

代码语言:txt
复制
install.packages(“包”)BiocManager::install(“包”)

加载R包

library()和require()# 加不加引号无所谓

综合步骤

代码语言: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的基础函数

以iris为例

mutate(),新增列

mutate(test, new = Sepal.Length * Sepal.Width)

select(),按列筛选

按列号筛选

代码语言:txt
复制
select(test,1)# 取第一行、第一列
##     Sepal.Length
## 1            5.1
## 2            4.9
## 51           7.0
## 52           6.4
## 101          6.3
## 102          5.8
select(test,c(1,5))# 取第一到五行、列
##     Sepal.Length    Species
## 1            5.1     setosa
## 2            4.9     setosa
## 51           7.0 versicolor
## 52           6.4 versicolor
## 101          6.3  virginica
## 102          5.8  virginica
select(test,Sepal.Length)#取列名为Sepal.Length的列
##     Sepal.Length
## 1            5.1
## 2            4.9
## 51           7.0
## 52           6.4
## 101          6.3
## 102          5.8

按列名筛选

代码语言:txt
复制
select(test, Petal.Length, Petal.Width)#取列名为Petal.Length, Petal.Width的列
##     Petal.Length Petal.Width
## 1            1.4         0.2
## 2            1.4         0.2
## 51           4.7         1.4
## 52           4.5         1.5
## 101          6.0         2.5
## 102          5.1         1.9
vars <- c("Petal.Length", "Petal.Width")#将列名赋值给vars
select(test, one_of(vars))#效果同上
##     Petal.Length Petal.Width
## 1            1.4         0.2
## 2            1.4         0.2
## 51           4.7         1.4
## 52           4.5         1.5
## 101          6.0         2.5
## 102          5.1         1.9

filter()筛选行

代码语言:txt
复制
filter(test, Species == "setosa")# 取Species中包含setosa的行
##   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
filter(test, Species == "setosa"&Sepal.Length > 5 )#  取Species中包含setosa且Sepal.Length > 5的行行
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
filter(test, Species %in% c("setosa","versicolor"))# 取Species 中包含"setosa","versicolor"的行
* %in% 判断前面一个向量内的元素是否在后面一个向量中

##   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

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

代码语言:txt
复制
arrange(test, Sepal.Length)#默认从小到大排序
##   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
arrange(test, desc(Sepal.Length))#用desc从大到小
##   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

summarise():汇总

代码语言:txt
复制
summarise(test, mean(Sepal.Length), sd(Sepal.Length))# 计算Sepal.Length的平均值和标准差
##   mean(Sepal.Length) sd(Sepal.Length)
## 1           5.916667        0.8084965
# 先按照Species分组,计算每组Sepal.Length的平均值和标准差
group_by(test, Species)
## # A tibble: 6 x 5
## # Groups:   Species [3]
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species   
## *        <dbl>       <dbl>        <dbl>       <dbl> <fct>     
## 1          5.1         3.5          1.4         0.2 setosa    
## 2          4.9         3            1.4         0.2 setosa    
## 3          7           3.2          4.7         1.4 versicolor
## 4          6.4         3.2          4.5         1.5 versicolor
## 5          6.3         3.3          6           2.5 virginica 
## 6          5.8         2.7          5.1         1.9 virginica
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
## # A tibble: 3 x 3
##   Species    `mean(Sepal.Length)` `sd(Sepal.Length)`
##   
## 1 setosa                     5                 0.141
## 2 versicolor                 6.7               0.424
## 3 virginica                  6.05              0.354

管道操作(传递)

将上一步的数据用在后面,后面的代码可以简写

代码语言:txt
复制
test %>% 
  group_by(Species) %>% 
  summarise(mean(Sepal.Length), sd(Sepal.Length))
## # A tibble: 3 x 3
##   Species    `mean(Sepal.Length)` `sd(Sepal.Length)`
##   
## 1 setosa                     5                 0.141
## 2 versicolor                 6.7               0.424
## 3 virginica                  6.05              0.354

count统计某列的unique值

  • unique :唯一值,在数据源只出现了一次,而删除重复项是对出现多次的数据只保留一个count(test,Species)# A tibble: 3 x 2Species n1 setosa 22 versicolor 23 virginica 2连接两个表內连inner_joininner_join(test1, test2, by = "x")x z y1 b A 22 e B 53 f C 6左连left_join以左边的数据框中x的数据为主取后者包含的。#同理可得右连接left_join(test1, test2, by = 'x')x z y1 b A 22 e B 53 f C 64 x D NAleft_join(test2, test1, by = 'x')x y z1 a 12 b 2 A3 c 34 d 45 e 5 B6 f 6 C全连full_join把两组数据放在一起full_join( test1, test2, by = 'x')x z y1 b A 22 e B 53 f C 64 x D NA5 a6 c7 d 半连接:返回能够与y表匹配的x表所有记录semi_joinsemi_join(x = test1, y = test2, by = 'x')x z1 b A2 e B3 f C
  • 取交集

反连接:返回无法与y表匹配的x表的所记录anti_join

代码语言:txt
复制
anti_join(x = test2, y = test1, by = 'x')
##   x y
## 1 a 1
## 2 c 3
## 3 d 4

简单合并

  • 相当于base包里的cbind()函数和rbind()函数;注意,bind_rows()函数需要两个表格列数相同,而bind_cols()函数则需要两个数据框有相同的行数
代码语言: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包
  • 加载R包
  • 关于dplyr的基础函数
    • mutate(),新增列
      • select(),按列筛选
        • 按列号筛选
        • 按列名筛选
        • filter()筛选行
        • arrange(),按某1列或某几列对整个表格进行排序
        • summarise():汇总
      • 管道操作(传递)
        • count统计某列的unique值
          • 反连接:返回无法与y表匹配的x表的所记录anti_join
          • 简单合并
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档