Skip to content

2.2 如何处理 DataFrame?

R 的数据框操作

作为 R 语言的一个重要特点,数据框操作在数据分析中起着至关重要的作用。让我们一起学习如何在 R 中操作数据框。

创建数据框

使用 data.frame() 函数创建一个数据框,并使用 print() 函数查看其内容。

df <- data.frame(col1 = c(1, 2, 3), col2 = c("A", "B", "C"))

print(df)

# 输出结果
#   col1 col2
# 1    1    A
# 2    2    B
# 3    3    C

查看数据框内容

使用 head() 函数可以查看数据框的前几行。默认情况下,head() 会显示前 6 行数据。

# 创建数据框
df <- data.frame(
  col1 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
  col2 = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"),
  col3 = c(TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE)
)

# 默认显示前6行
head(df)

# 输出结果
#   col1 col2  col3
# 1    1    A  TRUE
# 2    2    B FALSE
# 3    3    C  TRUE
# 4    4    D  TRUE
# 5    5    E FALSE
# 6    6    F FALSE

# 指定显示的行数
head(df, 3)

# 输出结果
#   col1 col2  col3
# 1    1    A  TRUE
# 2    2    B FALSE
# 3    3    C  TRUE

选择特定行和列

使用 df[row, col] 或者 df$col 选择特定的行或列。

# 创建数据框
df <- data.frame(col1 = c(1, 2, 3), col2 = c("A", "B", "C"), col3 = c(TRUE, FALSE, TRUE))

# 选择第1行
row1 <- df[1, ]

# 选择col2列
col2 <- df$col2

# 输出结果1
print(row1)
#   col1 col2  col3
# 1    1    A  TRUE

# 输出结果2
print(col2)
# [1] "A" "B" "C"

删除特定行和列

使用 df[-row, -col] 删除特定的行和列。

# 创建数据框
df <- data.frame(col1 = c(1, 2, 3), col2 = c("A", "B", "C"), col3 = c(TRUE, FALSE, TRUE))

# 删除第1行和第3列
df <- df[-1, -3]

# 输出结果
print(df)
#   col1 col2
# 2    2    B
# 3    3    C

选择特定列

使用 df[, c("col2")] 选择特定列。

# 创建数据框
df <- data.frame(col1 = c(1, 2, 3), col2 = c("A", "B", "C"), col3 = c(TRUE, FALSE, TRUE))

# 选择col2列
df <- df[, c("col2")]

# 输出结果
print(df)
#   col2
# 1    A
# 2    B
# 3    C

获取和设置列名

使用 colnames(df) 获取列名,使用 colnames(df) <- c("new_col1", "new_col2", ...) 设置列名。

# 创建数据框
df <- data.frame(col1 = c(1, 2, 3), col2 = c("A", "B", "C"), col3 = c(TRUE, FALSE, TRUE))

# 获取列名
print(colnames(df))
# [1] "col1" "col2" "col3"

# 设置列名
colnames(df) <- c("SampleA", "SampleB", "SampleC")

# 输出新列名
print(colnames(df))
# [1] "SampleA" "SampleB" "SampleC"

读取外部文件

在 RNA-seq 分析中,常常需要读取外部文件(如 csv, tsv, excel)。让我们尝试读取一个 csv 文件。

下载并读取 csv 文件

将以下文件下载到桌面:

sample.csv

内容如下:
id,name,age
1,Alice,25
2,Bob,30
3,Charlie,35
4,David,40
5,Eve,45

设置工作目录

在 RStudio 的右下角窗口中:

  1. 选择 Desktop
  2. 点击 More
  3. 选择 Set As Working Directory

请确保正确设置工作目录,否则后续代码将无法运行。

image.png

读取外部文件

让我们实际操作一下如何读取 CSV 文件。读取 CSV 文件时需要使用 readr 库。

1. 读取 CSV 文件

首先,加载 readr 库并读取 CSV 文件。

# 加载readr库
library(readr)

# 读取CSV文件
df <- read_csv("sample.csv")

# 输出结果
# A tibble: 5 × 3
#      id name     age
#   <dbl> <chr>  <dbl>
# 1     1 Alice     25
# 2     2 Bob       30
# 3     3 Charlie   35
# 4     4 David     40
# 5     5 Eve       45

read_csv 函数读取 CSV 文件,并返回一个 tidyverse 包中的 tibble 数据结构。如果希望使用数据框,可以结合 as.data.frame 函数。

df <- as.data.frame(read_csv("sample.csv"))
print(df)

# 输出结果
#   id    name age
# 1  1   Alice  25
# 2  2     Bob  30
# 3  3 Charlie  35
# 4  4   David  40
# 5  5     Eve  45

2. 读取 TSV 文件

读取 TSV 文件时,使用 read_tsv 函数。

# 加载readr库
library(readr)

# 读取TSV文件
df <- read_tsv("sample.tsv")

# 示例输出
# A tibble: 5 × 3
#      id name     age
#   <dbl> <chr>  <dbl>
# 1     1 Alice     25
# 2     2 Bob       30
# 3     3 Charlie   35
# 4     4 David     40
# 5     5 Eve       45

3. 读取 Excel 文件

读取 Excel 文件时,需要使用 readxl 库。

# 加载readxl库
library(readxl)

# 读取Excel文件
df <- read_excel("example.xlsx")

# 示例输出
# # A tibble: 5 × 3
#      id name     age
#   <dbl> <chr>  <dbl>
# 1     1 Alice     25
# 2     2 Bob       30
# 3     3 Charlie   35
# 4     4 David     40
# 5     5 Eve       45