library(tidyverse)
一、数据类型 Tibble
1. 读取dataframe
# data.frame
gene_exp_df <- read.delim("data/R_basic/gene_exp.txt", row.names=1)
2. 读取tible
# tibble
library(readr) # 会覆盖Rbase里的read_delim
gene_exp_tbl <- read_delim("data/R_basic/gene_exp.txt", "\t",
escape_double = FALSE, trim_ws = TRUE)
# escape_double:是否通过双写引号来转义
# trim_ws:解析字段前,是否要修剪首尾的空格、制表符(空白字符)
3. 数据类型转换
# 将 data.frame 转换为 tibble
library(tibble)
as_tibble(rownames_to_column(gene_exp_df, var = "gene_id")) # 行名列转换为普通列,加上列名
# 将 tibble 转换为 data.frame
as.data.frame(column_to_rownames(gene_exp_tbl, var = "gene_id")) # 将某一列转换为行名列
二、数据处理 Dplyr
# 导入测试数据
library(readr)
de_result <- read_delim("data/R_basic/de_result.txt",
"\t", escape_double = FALSE, trim_ws = TRUE)
# select 选择列
library(dplyr)
select(de_result, gene_id, logFC, padj = FDR) # 第一个是数据,往右是要选择的列名,用“=”直接更改列名
select(de_result, -pvalue) # “-”反选
# mutate 添加列
mutate(de_result, FC = 2 ^ logFC)
# filter 选择行。& 表示与,| 表示或
filter(de_result, abs(logFC) >= 1 & FDR < 0.05)
filter(gene_exp_tbl, !is.na(sample2)) # 只保留 sample2 列没有缺失值的所有行,删除 sample2 列为缺失值(NA)的行
# arrange 排序
arrange(de_result, FDR) # 按 FDR 升序排列
arrange(de_result, desc(FDR)) # 按 FDR 降序排列
# 关联
gene_function <- read_delim("data/R_basic/gene_function.txt",
"\t", escape_double = FALSE, trim_ws = TRUE)
left_join(de_result, gene_function, by = c('gene_id' = 'gene_name'))
# left_join:以左边的表为基准。左边表的行一条都不会丢;右边表能匹配就拼接数据,匹配不上就填缺失值(NA)。
# right_join: 以右边的表为基准
# full_join: 并集
# inner_join: 交集
# 管道 %>%
select(de_result, gene_id, logFC, padj = FDR) %>% # 选择所需列
filter(abs(logFC) > 1 & padj < 0.05) %>% # 筛选满足条件的行
left_join(gene_function, by = c('gene_id' = 'gene_name')) # 关联合并