R基础(五):tidyverse

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')) # 关联合并

 

posted @ 2026-04-28 01:55  asaca_r  阅读(22)  评论(0)    收藏  举报