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

DAY6-学习R包

原创
作者头像
用户10663401
发布2023-07-20 19:41:09
2840
发布2023-07-20 19:41:09
举报
文章被收录于专栏:sxxq

安装和加载R包

1、镜像设置

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

2、安装命令

代码语言:javascript
复制
install.packages(“ ”) # 为CRAN网站下载;双引号内为包名字
BiocManager::install(“ ”) #为Biocductor上下载

3、加载

代码语言:javascript
复制
library() #括号内为包名字
require()

利用dplyr包----学习五个基本函数

首先把前面所需代码写完

代码语言:javascript
复制
> 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) 
> X= iris[c(1:3,20:22,70:71)] #使用内置数据来进行操作

1、mutate() #新增列

代码语言:javascript
复制
> mutate(X,new = Sepal.Length * Sepal.Width)
   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           4.7         3.2          1.3         0.2
20          5.1         3.8          1.5         0.3
21          5.4         3.4          1.7         0.2
22          5.1         3.7          1.5         0.4
70          5.6         2.5          3.9         1.1
71          5.9         3.2          4.8         1.8
      Species   new
1      setosa 17.85
2      setosa 14.70
3      setosa 15.04
20     setosa 19.38
21     setosa 18.36
22     setosa 18.87
70 versicolor 14.00
71 versicolor 18.88

2、select() #按列筛选

  • 利用列号
代码语言:javascript
复制
> select(X,1)     #筛出第一列
   Sepal.Length
1           5.1
2           4.9
3           4.7
20          5.1
21          5.4
22          5.1
70          5.6
71          5.9
> select(X,c(1,5))         #筛出第一列和第五列
   Sepal.Length    Species
1           5.1     setosa
2           4.9     setosa
3           4.7     setosa
20          5.1     setosa
21          5.4     setosa
22          5.1     setosa
70          5.6 versicolor
71          5.9 versicolor
  • 按列名筛选
代码语言:javascript
复制
> select(X, Petal.Length, Petal.Width)
   Petal.Length Petal.Width
1           1.4         0.2
2           1.4         0.2
3           1.3         0.2
20          1.5         0.3
21          1.7         0.2
22          1.5         0.4
70          3.9         1.1
71          4.8         1.8
> vars=c("Petal.Length", "Petal.Width")
> select(X, one_of(vars))
   Petal.Length Petal.Width
1           1.4         0.2
2           1.4         0.2
3           1.3         0.2
20          1.5         0.3
21          1.7         0.2
22          1.5         0.4
70          3.9         1.1
71          4.8         1.8

2、filter() #筛选行

代码语言:javascript
复制
> filter(X,Species=="versicolor")
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.6         2.5          3.9         1.1
2          5.9         3.2          4.8         1.8
     Species
1 versicolor
2 versicolor
> filter(X, Species == "versicolor"&Sepal.Length > 5 )
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.6         2.5          3.9         1.1
2          5.9         3.2          4.8         1.8
     Species
1 versicolor
2 versicolor
> filter(X, Species %in% "versicolor")
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.6         2.5          3.9         1.1
2          5.9         3.2          4.8         1.8
     Species
1 versicolor
2 versicolor

4、arrange() #表格排序

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

5、summarise() #汇总

代码语言:javascript
复制
summarise(X, median(Sepal.Length), var(Sepal.Length))    # 计算Sepal.Length的中位数值和方差
>  group_by(X, Species)      #按照Species对X进行分组
A tibble: 8 × 5
# Groups:   Species [2]
  Sepal.Length Sepal.Width Petal.Length Petal.Width
         <dbl>       <dbl>        <dbl>       <dbl>
1          5.1         3.5          1.4         0.2
2          4.9         3            1.4         0.2
3          4.7         3.2          1.3         0.2
4          5.1         3.8          1.5         0.3
5          5.4         3.4          1.7         0.2
6          5.1         3.7          1.5         0.4
7          5.6         2.5          3.9         1.1
8          5.9         3.2          4.8         1.8
# ℹ 1 more variable: Species <fct>

> a= group_by(X, Species)
> summarise(a,mean(Sepal.Length), sd(Sepal.Length))
# A tibble: 2 × 3
  Species    `mean(Sepal.Length)` `sd(Sepal.Length)`
  <fct>                     <dbl>              <dbl>
1 setosa                     5.05              0.235
2 versicolor                 5.75              0.212

利用dplyr包----学习两个实用技能

  • 管道操作 %>%
代码语言:javascript
复制
> X %>% 
+     group_by(Species) %>% 
+     summarise(mean(Sepal.Length), sd(Sepal.Length))
# A tibble: 2 × 3
  Species    `mean(Sepal.Length)` `sd(Sepal.Length)`
  <fct>                     <dbl>              <dbl>
1 setosa                     5.05              0.235
2 versicolor                 5.75              0.212
#  其实与上方汇总处结果一致!
  • count() #统计某列的重复值和重复次数
代码语言:javascript
复制
count(X,Species)

数据框的连接

代码语言:javascript
复制
#先新建两个数据框
> test1 = data.frame(x = c('b','e','f','x'), 
                    z = c("A","B","C",'D'))
> test2 = data.frame(x = c('a','b','c','d','e','f'), 
                    y = c(1,2,3,4,5,6))

1、jnner_join #交集

代码语言:javascript
复制
inner_join(test1, test2, by = "x")

2、full_join #全连接

代码语言:javascript
复制
full_join( test1, test2, by = 'x')

3、left_join和right_join #左连接和右连接

代码语言:javascript
复制
> left_join(test1, test2, by = 'x')
  x z  y
1 b A  2
2 e B  5
3 f C  6
4 x D NA
> right_join(test1, test2, by = 'x')
  x    z y
1 b    A 2
2 e    B 5
3 f    C 6
4 a <NA> 1
5 c <NA> 3
6 d <NA> 4

4、semi_join #半连接

代码语言:javascript
复制
#返回能够与y表匹配的x表所有记录
> semi_join(test1, test2, by = 'x')   # 其中 x = test1, y = test2
  x z
1 b A
2 e B
3 f C

5、anti_join #反连接

代码语言:javascript
复制
# 返回无法与y表匹配的x表的所记录
> anti_join(test2, test1, by = 'x')    # 其中 x = test2, y = test1
  x y
1 a 1
2 c 3
3 d 4

6、简单合并

cbind()函数和rbind()函数与bind_rows()函数和bind_cols()函数作用相似

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

代码语言:javascript
复制
bind_rows(test1, test2)   #test1和test2均为数据框,且列数相等
bind_cols(test1, test3)   #test1和test3均为数据框,且行数相等

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

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

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

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

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装和加载R包
    • 1、镜像设置
      • 2、安装命令
        • 3、加载
        • 利用dplyr包----学习五个基本函数
          • 1、mutate() #新增列
            • 2、select() #按列筛选
              • 2、filter() #筛选行
                • 4、arrange() #表格排序
                  • 5、summarise() #汇总
                  • 利用dplyr包----学习两个实用技能
                  • 数据框的连接
                    • 1、jnner_join #交集
                      • 2、full_join #全连接
                        • 3、left_join和right_join #左连接和右连接
                          • 4、semi_join #半连接
                            • 5、anti_join #反连接
                              • 6、简单合并
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档