R数据清洗:使用tidyr整理数据
学习使用tidyr包对数据进行清洗与整理,处理缺失值、拆分合并列、转换长宽格式。 · 难度:入门 · +15XP
数据清洗的重要性
真实世界的数据往往杂乱无章:存在缺失值、列名不规范、格式不统一。R的tidyr包提供了一系列函数帮助我们将数据整理为整洁格式(Tidy Data):每一列是一个变量,每一行是一个观测。
1. 处理缺失值
使用drop_na()删除含缺失值的行,或用replace_na()填充缺失值。
library(tidyr)
df <- data.frame(
id = 1:4,
x = c(NA, 2, 3, NA),
y = c('a', NA, 'c', 'd')
)
df_clean <- drop_na(df)
print(df_clean)2. 长宽格式转换
pivot_longer()将宽表变长表,pivot_wider()将长表变宽表。
wide <- data.frame(
id = 1:2,
Q1 = c(90, 85),
Q2 = c(88, 92)
)
long <- pivot_longer(wide, cols = c(Q1, Q2), names_to = 'quarter', values_to = 'score')
print(long)3. 拆分与合并列
separate()将一列拆分为多列,unite()将多列合并为一列。
df <- data.frame(name_date = c('Alice_2024', 'Bob_2023'))
df_split <- separate(df, name_date, into = c('name', 'year'), sep = '_')
print(df_split)| 函数 | 作用 |
|---|---|
| drop_na() | 删除含NA的行 |
| replace_na() | 替换NA为指定值 |
| pivot_longer() | 宽表转长表 |
| pivot_wider() | 长表转宽表 |
| separate() | 拆分列 |
| unite() | 合并列 |
练习提示:尝试使用pivot_longer()将内置数据集iris的花朵测量列转换为长格式,并观察结果。