### `data.frame` 的基本使用方法
`data.frame` 是 R 语言中最常用的数据结构之一,用于存储表格型数据,每一列代表一个变量,每一行代表一个观测。`data.frame` 支持不同类型的列(如数值、字符、因子等),这使其非常适合用于数据分析和统计建模。
#### 创建 `data.frame`
可以使用 `data.frame()` 函数创建数据框。例如:
```r
df <- data.frame(
id = c(1, 2, 3),
name = c("Alice", "Bob", "Charlie"),
age = c(25, 30, 28)
)
```
该方式允许用户手动输入数据,也可以从外部文件(如 CSV、Excel)导入[^4]。
#### 数据访问与筛选
访问 `data.frame` 中的列可以通过 `$` 或 `[ , ]` 运算符实现:
```r
df$name
df[1, ] # 第一行
df[, "age"] # 第二列
```
条件筛选可以通过逻辑表达式完成:
```r
df[df$age > 28, ]
```
这种方式可以灵活地提取符合特定条件的数据行[^1]。
#### 数据删除
删除某列可以使用赋值 `NULL`:
```r
df$id <- NULL
```
删除某些行可以结合逻辑条件:
```r
df <- df[df$age != 25, ]
```
这些操作可以用于清理和整理数据集。
#### 数据合并
使用 `cbind()` 和 `rbind()` 可以分别按列和按行合并两个 `data.frame`:
```r
df1 <- data.frame(a = c(1, 2))
df2 <- data.frame(b = c(7, 8))
cbind(df1, df2)
# 输出:
# a b
# 1 1 7
# 2 2 8
df1 <- data.frame(x = c("a", "a"), y = c(5, 6))
df2 <- data.frame(x = c("b", "b"), y = c(9, 10))
rbind(df1, df2)
# 输出:
# x y
# 1 a 5
# 2 a 6
# 3 b 9
# 4 b 10
```
该功能适用于将多个数据集整合为一个整体进行分析[^4]。
#### 数据格式转换
在某些情况下,需要将 `data.frame` 转换为其他格式,如矩阵或 `data.table`。使用 `as.matrix()` 可将 `data.frame` 转换为矩阵:
```r
mat <- as.matrix(df)
```
而 `data.table` 提供了更高效的处理方式,可使用 `setDT()` 将 `data.frame` 转换为 `data.table`:
```r
library(data.table)
dt <- as.data.table(df)
```
这种方式适用于大数据集的快速操作和处理[^2]。
#### 数据重塑
使用 `tidyr` 包中的 `gather()` 可以将宽格式数据转换为长格式:
```r
library(tidyr)
df_wide <- data.frame(id = 1:3, x = c(10, 20, 30), y = c(100, 200, 300))
df_long <- gather(df_wide, key = "variable", value = "value", -id)
```
该操作常用于数据可视化和建模前的数据整理。
#### 常见问题与注意事项
- **列名或行名包含“X”、“V”等字符**:这是 R 在自动命名时的默认行为,建议在创建 `data.frame` 时手动指定列名以避免混乱[^1]。
- **数据类型不一致**:在合并或转换过程中需要注意数据类型的兼容性,否则可能导致错误。
- **行名处理**:默认情况下,`data.frame` 会使用整数作为行名,若需保留特定标识符,应将其作为一列处理。
###