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 的右下角窗口中:
- 选择
Desktop
。 - 点击
More
。 - 选择
Set As Working Directory
。
请确保正确设置工作目录,否则后续代码将无法运行。
读取外部文件¶
让我们实际操作一下如何读取 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