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閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容

  • 今天學習了R包dplyr,總結一下就是需要學會 : 設置鏡像 鏡像的高級設置方法(不用每次打開Rstudio都得運...
    果果爸_2019閱讀 391評論 0 0
  • 題外話:知乎閱讀三百萬的生信學習指南嗯哼,無意中刷到這篇博文,覺得寫的還是蠻接地氣的,就順手關注了博主的公眾號生信...
    蒙蒙幫主閱讀 191評論 0 1
  • 寫在前面 R包是多個函數的集合,具有詳細的說明和示例。學生信,R語言必學的原因是豐富的圖表和Biocductor上...
    小潔忘了怎么分身閱讀 16,825評論 1 22
  • 學習R包 安裝加載R包三部曲 options("repos" = c(CRAN="https://mirrors....
    justsmile_84eb閱讀 355評論 0 0
  • 1.包和數據的安裝 安裝dplyr包 安裝hflights包,該軟件包中的飛機航班數據將用于本文中dplyr包各個...
    apricoter閱讀 9,444評論 0 17