Day6 学习R包

镜像设置

1.菜单法 可以配置CRAN镜像,一般选清华

*但是bioconductor上R包没法用这个CRAN镜像下载,而且无法保证一定从此CRAN下载R包。

options()$repos  
options()$BioC_mirror
#可以通过此命令查找目前Rstudio通过什么镜像下载R包

2.代码法

*同时设置CRAN镜像及bioconductor镜像

options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))  #清华源CRAN
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #中科大源bioconductor

*每次启动都需要先运行。

3.高级模式 一劳永逸

R的两个最重要的配置文件
.Renviron #设置R的环境变量用,此处按下不表
.Rprofile #R的代码文件,启动Rstudio时自动运行
在Linux中可以使用file.edit命令编辑

file.edit(~/.Rprofile)  #注意此处是Linux命令

然后在出现的对话框中添加2的上述两行option代码,即可配置完成

安装R包

#首先google一下想安的包在CRAN还是bioconductor, 再分别选择使用以下命令
install.packages(“包”)
BiocManager::install(“包”)

加载

library(包)
require(包)

学习dplyr包

加载“dplyr"

此前已通过“tydiverse”安装“dplyr”,此处直接加载

library("dplyr")

学一下"dplyr"

help(“dplyr")
browseVignettes(package = "dplyr")
#找到dplyr的网络介绍链接:[Introduction to dplyr](http://127.0.0.1:19586/library/dplyr/doc/dplyr.html),然后chrome有道网页翻译2.0打开右侧窗口显示,左边敲Rscript,不能太方便。

单表数据操作:都是“动词(表格,命令)”格式

  • filter() #按行筛选
  • arrange() #按列排序
  • select() #按列筛选
  • mutate() transmute() #新增列,该列是现有列的函数
  • summarise() #汇总
  • sample_n() sample_frac() #随机抽样
  • slice() #按等级秩序选择各行,少用,可用filter(), 或row_number()代替

数据:使用生信星球教学数据集

> test <- iris[c(1:2,51:52,101:102),] #把内置数据框iris的相应行提取出来赋值给test数据框
> test
    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

* filter() #按行筛选

> filter(test, 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
 #等同于,
test[test$Species == "setosa",] 
> filter(test, Species == "setosa"&Sepal.Length > 5 )
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
#等同于,
test[test$Species == "setosa" & test$Sepal.Length > 5,]
> filter(test, Species %in% c("setosa","versicolor"))
  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
#等同于,
test[test$Species %in% c("setosa","versicolor"),]

* arrange() #按列排序

> arrange(test, Sepal.Length)  #默认从小到大排序
> arrange(test, desc(Sepal.Length))  #用desc从大到小
> arrange(test, Petal.Length, desc(Sepal.Length)) #先按变量1从小到大,再按变量2从大到小
  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          6.4         3.2          4.5         1.5 versicolor
4          7.0         3.2          4.7         1.4 versicolor
5          5.8         2.7          5.1         1.9  virginica
6          6.3         3.3          6.0         2.5  virginica

*select() #按列筛选

#具体用法,
select(test,1:3) #也可以select(test,Sepal.Length:Petal.Length)
select(test,c(1,5))
select(test,Sepal.Length)
select(test,- c(1,5))  # -号可做反选
#select() 可以选择并同时重命名变量,但不如rename()好用
#可搭配starts_with(),ends_with(),matches()和contains()使用风味更佳 具体可[?select](R Documentation
:Select/rename variables by name)看Examples

* mutate() transmute() #新增列,该列是 现有列的函数

#注意允许引用刚刚创建的列来新建列,例如,
 mutate(test, new = Sepal.Length * Sepal.Width, new100 = new * 100)
      Sepal.Length Sepal.Width Petal.Length Petal.Width    Species   new new100
1          5.1         3.5          1.4         0.2     setosa 17.85   1785
2          4.9         3.0          1.4         0.2     setosa 14.70   1470
3          7.0         3.2          4.7         1.4 versicolor 22.40   2240
4          6.4         3.2          4.5         1.5 versicolor 20.48   2048
5          6.3         3.3          6.0         2.5  virginica 20.79   2079
6          5.8         2.7          5.1         1.9  virginica 15.66   1566
# 假如只想保存新变量,用transmute()
> transmute(test, new = Sepal.Length * Sepal.Width, new100 = new * 100)
    new new100
1 17.85   1785
2 14.70   1470
3 22.40   2240
4 20.48   2048
5 20.79   2079
6 15.66   1566

* summarise() #汇总, 可结合group_by()使用

# 计算Sepal.Length的平均值和标准差
summarise(test, mean(Sepal.Length), sd(Sepal.Length))
# 先按照Species分组,计算每组Sepal.Length的平均值和标准差
group_by(test, Species)
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
#summarise描述统计[?summarise](Reduce multiple values down to a single value)

* sample_n() sample_frac() #随机抽样

#随机抽取n个样本或几个比例frac样本
> sample_n(test,2)
  Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1          6.3         3.3          6.0         2.5 virginica
2          4.9         3.0          1.4         0.2    setosa
> sample_frac(test,1/6)
  Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            7         3.2          4.7         1.4 versicolor

dplyr支持

1.管道操作 %>% (cmd/ctr + shift + M)

test %>% 
  group_by(Species) %>% 
  summarise(mean(Sepal.Length), sd(Sepal.Length))

2:count统计某列的unique值

count(test,Species)

dplyr双表操作:处理关系数据

#新建2表,注意不要引入factor,
options(stringsAsFactors = F)
> test1 <- data.frame(x = c('b','e','f','x'), z = c("A","B","C",'D'),stringsAsFactors = F)
> test2 <- data.frame(x = c('a','b','c','d','e','f'), y = c(1,2,3,4,5,6),stringsAsFactors = F)
> test1
  x z
1 b A
2 e B
3 f C
4 x D
> test2
  x y
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6

开始造

1.內连inner_join,取交集

> inner_join(test1, test2, by = "x")
  x z y
1 b A 2
2 e B 5
3 f C 6

2.左连left_join

> 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
> left_join(test2, test1, by = 'x')
  x y    z
1 a 1 <NA>
2 b 2    A
3 c 3 <NA>
4 d 4 <NA>
5 e 5    B
6 f 6    C

3.全连full_join

> full_join( test1, test2, by = 'x')
  x    z  y
1 b    A  2
2 e    B  5
3 f    C  6
4 x    D NA
5 a <NA>  1
6 c <NA>  3
7 d <NA>  4

4.半连接semi_join:返回能够与y表匹配的x表所有记录

> semi_join(x = test1, y = test2, by = 'x')
  x z
1 b A
2 e B
3 f C

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

> anti_join(x = test2, y = test1, by = 'x')
  x y
1 a 1
2 c 3
3 d 4

6.简单合并:bind_rows()按行合并, bind_cols()按列合并

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

推荐阅读更多精彩内容

  • 今天学习了R包dplyr,总结一下就是需要学会 : 设置镜像 镜像的高级设置方法(不用每次打开Rstudio都得运...
    果果爸_2019阅读 382评论 0 0
  • 题外话:知乎阅读三百万的生信学习指南嗯哼,无意中刷到这篇博文,觉得写的还是蛮接地气的,就顺手关注了博主的公众号生信...
    蒙蒙帮主阅读 184评论 0 1
  • 写在前面 R包是多个函数的集合,具有详细的说明和示例。学生信,R语言必学的原因是丰富的图表和Biocductor上...
    小洁忘了怎么分身阅读 16,645评论 1 22
  • 学习R包 安装加载R包三部曲 options("repos" = c(CRAN="https://mirrors....
    justsmile_84eb阅读 352评论 0 0
  • 1.包和数据的安装 安装dplyr包 安装hflights包,该软件包中的飞机航班数据将用于本文中dplyr包各个...
    apricoter阅读 9,403评论 0 17