18 数据处理之数据变形

在上一篇中,我们讨论了数据聚合与汇总,了解了如何对数据进行分组、求和和平均等操作。本篇将围绕数据变形展开,介绍在R中如何对数据进行重塑、转置和展平等操作,以便为后续的可视化及分析做好准备。

数据变形的基本概念

数据变形(Data Reshaping)是指通过各种手段改变数据的格式、结构或形状,使其能够更好地进行分析和可视化。在R中,tidyverse包中的tidyrdplyr是最常用的工具包,用于数据的变形与处理。

宽格式与长格式

在数据分析中,我们通常会遇到宽格式(Wide Format)和长格式(Long Format)数据。宽格式指的是每个组合的变量在一行显示,而长格式则是将变量的每一个值放在单独的一行。

宽格式与长格式示例

考虑一个包含学生成绩的数据集,如下:

学生 数学 英语
张三 85 78
李四 90 82
王五 76 88

这是一个宽格式的数据。如果我们想将其变换为长格式,结果将如下所示:

学生 科目 成绩
张三 数学 85
张三 英语 78
李四 数学 90
李四 英语 82
王五 数学 76
王五 英语 88

使用pivot_longer进行数据转换

在R中,我们可以使用pivot_longer函数将宽格式数据转换为长格式。以下是一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 加载tidyverse包
library(tidyverse)

# 创建宽格式数据框
data_wide <- tibble(
学生 = c("张三", "李四", "王五"),
数学 = c(85, 90, 76),
英语 = c(78, 82, 88)
)

# 使用pivot_longer转换为长格式
data_long <- data_wide %>%
pivot_longer(cols = c(数学, 英语),
names_to = "科目",
values_to = "成绩")

# 查看结果
print(data_long)

输出结果如下:

1
2
3
4
5
6
7
8
9
# A tibble: 6 x 3
学生 科目 成绩
<chr> <chr> <dbl>
1 张三 数学 85
2 张三 英语 78
3 李四 数学 90
4 李四 英语 82
5 王五 数学 76
6 王五 英语 88

使用pivot_wider进行宽格式转换

反之,我们也可以使用pivot_wider函数将长格式数据转换为宽格式。例如,对于上面的data_long数据框,我们可以按以下方式转换回宽格式:

1
2
3
4
5
6
7
# 使用pivot_wider转换为宽格式
data_wide_back <- data_long %>%
pivot_wider(names_from = 科目,
values_from = 成绩)

# 查看结果
print(data_wide_back)

输出结果将再次为原始的宽格式数据:

1
2
3
4
5
6
# A tibble: 3 x 3
学生 数学 英语
<chr> <dbl> <dbl>
1 张三 85 78
2 李四 90 82
3 王五 76 88

数据的转置

数据转置是另一个常见的变形操作,主要用于交换数据框的行和列。在R中,我们可以使用t()函数进行转置。

1
2
3
4
5
6
7
# 转置数据框
data_transposed <- as.data.frame(t(data_wide))
colnames(data_transposed) <- data_transposed[1, ] # 设置第一行为列名
data_transposed <- data_transposed[-1, ] # 删除第一行

# 查看转置后的数据
print(data_transposed)

总结

本篇文章深入探讨了数据变形的概念及其在R中的实现方法。从宽格式到长格式的转换,再到数据的转置,R语言提供了强大的数据操作功能,帮助我们更有效地整理、分析和可视化数据。

在下一篇中,我们将讨论基础绘图,介绍如何使用R中的基础绘图函数进行数据可视化,为我们的数据分析增添视觉效果。希望你能继续关注!

18 数据处理之数据变形

https://zglg.work/r-lang-zero/18/

作者

AI免费学习网(郭震)

发布于

2024-08-13

更新于

2024-08-13

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论