Day6 R包

一、设置下载镜像

三种方法:
1.在RStudio手动设置,但只能设置CRAN的镜像

RStudio镜像设置

2.在每次安装R包之前,敲以下代码:

options("repos"=c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))  #设置CRAN下载为清华镜像
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")   #设置bioconductor下载镜像为中科大

3.设置R的配置文件
file.edit("~/.Rprofile"),打开如下界面:

Rprofile

输入:

options("repos"=c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") 

保存,退出RStudio并重启,之后直接输入安装R包的代码,R会自动从这两个镜像点下载R包,无需另外设置

二、下载R包

注意包的来源是CRAN还是bioconductor,有些包来源于GitHub

install.packages("dplyr")               #从CRAN下载dylyr包
BiocManager::install("clusterProfiler") #从bioconductor下载clusterProfiler包

三、加载R包

使用R包之前需先加载,有两种方法:

library() #如果加载的包没有安装,会提示没有安装,并停止执行
require() #如果加载的包没安装,返回False;如果已安装,返回True,并成功加载

四、dplyr包运用实例

1.新增列:mutata()函数

> require(dplyr)    #加载dplyr包
> a <- iris         #取内置数据集iris
> mutate(a[1:5,],new=Petal.Length*Petal.Width)     #新增一列new,为Petal.Length×Petal.Width
 Sepal.Length Sepal.Width Petal.Length Petal.Width Species  new
1          5.1         3.5          1.4         0.2  setosa 0.28
2          4.9         3.0          1.4         0.2  setosa 0.28
3          4.7         3.2          1.3         0.2  setosa 0.26
4          4.6         3.1          1.5         0.2  setosa 0.30
5          5.0         3.6          1.4         0.2  setosa 0.28

2.按列筛选:select()函数

> select(a[1:6,],1)   #取a的第1列前6行
  Sepal.Length
1          5.1
2          4.9
3          4.7
4          4.6
5          5.0
6          5.4

> select(a[1:6,],c(2,5))   #取a的第2、5列前6行
  Sepal.Width Species
1         3.5  setosa
2         3.0  setosa
3         3.2  setosa
4         3.1  setosa
5         3.6  setosa
6         3.9  setosa

> select(a[1:6,],Species)   #取a Species这一列的前6行
  Species
1  setosa
2  setosa
3  setosa
4  setosa
5  setosa
6  setosa

> b <- c("Species","Sepal.Length")   #取Species和Sepal.Length这两列
> select(a[1:6,],one_of(b))
  Species Sepal.Length
1  setosa          5.1
2  setosa          4.9
3  setosa          4.7
4  setosa          4.6
5  setosa          5.0
6  setosa          5.4

> select(a[1:6,],Species,Sepal.Length)   #取Species和Sepal.Length这两列,同上
  Species Sepal.Length
1  setosa          5.1
2  setosa          4.9
3  setosa          4.7
4  setosa          4.6
5  setosa          5.0
6  setosa          5.4

3.按行筛选:filter()函数

> test <- iris[c(1:2,51:52,101:102),]
> filter(test,Species=="setosa")     #选出test中含有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.Width>3&Sepal.Width<4)   #选出test中含有setosa且Sepal.Width在3~4之间的行
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa

> filter(test,Species %in% c("versicolor","virginica"))    #选出test中含versicolor和virginica的行
  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

4.按某(几)列对表格排序:arrange()函数

> arrange(test,Petal.Width)     #按Petal.Width列排序,默认升序
  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          5.8         2.7          5.1         1.9  virginica
6          6.3         3.3          6.0         2.5  virginica

> arrange(test,desc(Petal.Width))     #按Petal.Width列降序排序
  Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1          6.3         3.3          6.0         2.5  virginica
2          5.8         2.7          5.1         1.9  virginica
3          6.4         3.2          4.5         1.5 versicolor
4          7.0         3.2          4.7         1.4 versicolor
5          5.1         3.5          1.4         0.2     setosa
6          4.9         3.0          1.4         0.2     setosa

5.汇总:summarise()函数

> summarise(test,mean(Petal.Length),sd(Petal.Length))   #求Petal.Length的均值和标准差
  mean(Petal.Length) sd(Petal.Length)
1               3.85         1.966469

> summarise(group_by(test,Species),mean(Petal.Length),sd(Petal.Length))   #按Petal.Length分组,求Petal.Length的均值和标准差
# A tibble: 3 x 3
  Species    `mean(Petal.Length)` `sd(Petal.Length)`
  <fct>                     <dbl>              <dbl>
1 setosa                     1.4               0    
2 versicolor                 4.6               0.141
3 virginica                  5.55              0.636

6.管道操作:%>%

> test %>%          #按Petal.Length分组,求Petal.Length的均值和标准差
+   group_by(Species) %>% 
+   summarise(mean(Petal.Length),sd(Petal.Length))
# A tibble: 3 x 3
  Species    `mean(Petal.Length)` `sd(Petal.Length)`
  <fct>                     <dbl>              <dbl>
1 setosa                     1.4               0    
2 versicolor                 4.6               0.141
3 virginica                  5.55              0.636

7.统计元素个数:count()函数

> count(a,Species)    #统计Species列中各元素的个数
# A tibble: 3 x 2
  Species        n
  <fct>      <int>
1 setosa        50
2 versicolor    50
3 virginica     50

8.处理关系数据
8.1 内联,按某列取交集,合并两个表格:inner_join()

> df1 <- data.frame(x=c("a","b","c","d","e"),
+                   y=1:5,
+                   stringsAsFactors = F)
> df1
  x y
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
> df2 <- data.frame(x=c("a","c","x"),
+                   z=c("A","B","C"),
+                   stringsAsFactors = F)
> df2
  x z
1 a A
2 c B
3 x C
> inner_join(df1,df2,by="x")    #按x列取交集,将df1和df2合并
  x y z
1 a 1 A
2 c 3 B

8.2 左联,按其中一个数据框的列进行合并:left_join()

> left_join(df1,df2,by="x")    #按df1的x列进行合并
  x y    z
1 a 1    A
2 b 2 <NA>
3 c 3    B
4 d 4 <NA>
5 e 5 <NA>
> left_join(df2,df1,by="x")   #按df2的x列进行合并
  x z  y
1 a A  1
2 c B  3
3 x C NA

8.3 全联,按其中一列取并集,将两个数据框合并:full_join()

> full_join(df1,df2,by="x")   #按x列取并集,合并df1和df2
  x  y    z
1 a  1    A
2 b  2 <NA>
3 c  3    B
4 d  4 <NA>
5 e  5 <NA>
6 x NA    C

8.4 半连接,按其中一列取交集,返回其中一个数据框:semi_join()

> semi_join(df1,df2,by="x")   #按x列取交集,返回df1
  x y
1 a 1
2 c 3
> semi_join(df2,df1,by="x")   ##按x列取交集,返回df2
  x z
1 a A
2 c B

8.5 反连接,返回无法匹配的数据框的值:anti_join()

> anti_join(df1,df2,by="x")   #按x列,返回df1无法与df2匹配的值
  x y
1 b 2
2 d 4
3 e 5
> anti_join(df2,df1,by="x")   #按x列,返回df2无法与df1匹配的值
  x z
1 x C

8.6 简单合并,按行或列合并:bind_rows()bind_cols()

> tf1 <- data.frame(x=1:4,y=c("a","b","c","d"),stringsAsFactors = F)
> tf1
  x y
1 1 a
2 2 b
3 3 c
4 4 d
> tf2 <- data.frame(z=c("Alex","Bob","Cindy","David"))
> tf2
      z
1  Alex
2   Bob
3 Cindy
4 David
> tf3 <- data.frame(x=5:6,y=c("500","600"))
> tf3
  x   y
1 5 500
2 6 600

> bind_cols(tf1,tf2)    #按列合并,需行数相同
  x y     z
1 1 a  Alex
2 2 b   Bob
3 3 c Cindy
4 4 d David

> bind_rows(tf1,tf3)  #按行合并,需列数相同
  x   y
1 1   a
2 2   b
3 3   c
4 4   d
5 5 500
6 6 600
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • R包准备先知 R包(又叫小抄)的获取途径方法1:去百度/谷歌XX小抄方法2:找Rstudio的cheatsheet...
    喜喜66阅读 6,241评论 0 9
  • R包学习 安装和加载 从google搜包在哪里 加载:两种方法均可 快捷键 command+← #调到本行最左 c...
    Pingouin阅读 241评论 0 0
  • 2020-04-08今天的内容是学习R包(多个函数的集合),以dplyr为例。 一、配置Rstudio的下载镜像 ...
    a饭饭o阅读 271评论 0 1
  • 镜像设置 1.菜单法 可以配置CRAN镜像,一般选清华 *但是bioconductor上R包没法用这个CRAN镜像...
    文婷吖_0df6阅读 423评论 0 0
  • R语言前身是S语言,S语言是由AT&T Bell实验室的Rick Becker、John Chambers、All...
    JunChow520阅读 1,824评论 0 1