R語言入門6:數據處理之單表操作-Dplyr

我們已經使用Tidyr將數據進行了變形,使其符合Tidy data的原則。而在對數據進行正式的統計分析之前,通常還需要進行一些必要的數據處理,如:

  • 改變結構:排序,修改列名
  • 按行操作:過濾,選取,抽樣
  • 按列操作:篩選特定列
  • 統計、分組統計:最大值,最小值等

要完成以上這些分析,我們可以使用R中非常強大的一個包dplyr,通過幾個簡單的命令,即可完成我們想要的分析。

1.dplyr包的安裝和加載

# 安裝dplyr包
>install.packages("dplyr")
# 加載dplyr包
>library(dplyr)

2.使用dplyr進行數據管理

(1)排序:arrange

在使用tidyr對數據進行處理后,如下:

image

在上面的圖表中,是以SampleName進行排序的,我們可以以GeneId進行排序

# arrange(數據框名,要排序的列名)
gene_exp_GeneId <- arrange(gene_exp_tidy, GeneId)

按GeneId排序后的效果如下:

image

如果我們想要在GeneId排序的基礎上,再以Expression排序

gene_exp_GeneId_Exp <- arrange(gene_exp_tidy, GeneId, Expression)

image

默認條件下,是以升序排列的,如果我們想要以降序排列,只需在需要降序排列的列名前添加desc即可:

# 降序排列
gene_exp_GeneId_descExp <- arrange(gene_exp_tidy, GeneId, desc(Expression))
image

(2)按行(觀測)篩選:filter

篩選出表達量大于1的觀測:

# filter(數據框名,篩選條件)
filter(gene_exp_tidy, Expression > 1)
image

篩選出表達量大于1,并且基因名為gene1的觀測:

filter(gene_exp_tidy, Expression > 1, GeneId == "gene1")
image

(3)按列篩選:select

select函數用于選擇需要展示的列:

# 只展示SampleName和Expression列
select(gene_exp_tidy, SampleName, Expression)
image

使用select函數,我們還可以進行模糊的篩選

# 篩選所有列名中包含"me"的列
select(gene_exp_tidy, contains("me"))
image
# 展示所有列名中,以G開始的列
select(gene_exp_tidy, starts_with("G"))
image

(4)管道操作符:%>%

我們對數據的篩選和排序操作,可以使用管道符連接起來,一步即可完成:

# 先篩選出表達量大于1的觀測,再按GeneId升序排列,同時按Expression降序排列
filter(gene_exp_tidy, Expression >1) %>% arrange(GeneId, desc(Expression))
# 說明:使用管道符連接時,第一個操作的輸出結果會成為第二個操作的輸入,因此在arrange中不再需要指定數據框的名稱
image

(5)去除重復:distinct

使用distinct函數,我們可以去除數據框中有重復的行:

# 去除GeneId中有重復的行
distinct(gene_exp_tidy, GeneId)
image

(6)添加新變量:mutate

mutate函數用于根據已有的變量,產生一個新的變量

# 產生一個表達量是現有表達量10倍的變量
mutate(gene_exp_tidy, "10Exp" = Expression * 10)
image
# 得到表達量變?yōu)?0倍的變量后,去除原來的Express列
mutate(gene_exp_tidy, "10Exp" = Expression * 10) %>%
  select(-Expression)
image
# 在每一個GeneId前面,添加Os字符,用于說明是水稻的基因,并去除原來的GeneId列
# paste函數用來連接字符
mutate(gene_exp_tidy, Gene_ID = paste("Os", GeneId, sep = "_" ) ) %>%
  select(Gene_ID, SampleName, Expression)
image

(7)分組統計:group_by %>% summarise

使用summarise函數,可以對數據進行簡單的統計:

# 計算Expressin的平均值
summarise(gene_exp_tidy, avg = mean(Expression))
image

先對數據進行分組,再進行統計:

# 先以GeneId進行分組,再計算平均值
gene_exp_tidy %>%
  group_by(GeneId)%>%
  summarise(avg = mean(Expression))
image
# 計算每個基因在三個樣品中表達量的標準差sd
gene_exp_tidy %>%
  group_by(GeneId)%>%
  summarise(sd = sd(Expression))
image
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容