DAY6-学习R包

2023-07-20 19:41:09 浏览数 (1)

安装和加载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均为数据框,且行数相等

0 人点赞