R - 数据重塑:初学者指南

你好,未来的R语言程序员们!今天,我们将踏上一段激动人心的旅程,探索R语言中的数据重塑世界。如果你之前从未编写过程序,不用担心——我将作为你的友好向导,我们会一步一步地进行。在本教程结束时,你将能够像专业人士一样重塑数据!

R - Data Reshaping

什么是数据重塑?

在我们开始之前,让我们先聊聊数据重塑究竟是什么意思。想象你有一堆乐高积木。数据重塑就像重新排列这些积木以构建不同的结构。在R语言中,我们也是这样做——重新组织我们的数据,使其更适合分析。

现在,让我们开始一些实际操作的例子!

在数据框中合并列和行

添加列

让我们从简单的开始。想象你有一个包含水果信息的数据框:

fruits <- data.frame(
name = c("苹果", "香蕉", "樱桃"),
color = c("红色", "黄色", "红色")
)
print(fruits)

这将输出:

name  color
1 苹果    红色
2 香蕉    黄色
3 樱桃    红色

现在,假设我们想为每种水果添加一个新的价格列:

fruits$price <- c(0.5, 0.3, 0.7)
print(fruits)

瞧!我们已经添加了一个新的列:

name  color price
1 苹果    红色   0.5
2 香蕉    黄色   0.3
3 樱桃    红色   0.7

添加行

如果我们想在我们的列表中添加一种新的水果,我们也可以做到!

new_fruit <- data.frame(name = "枣", color = "棕色", price = 0.6)
fruits <- rbind(fruits, new_fruit)
print(fruits)

这将给我们:

name  color price
1 苹果    红色   0.5
2 香蕉    黄色   0.3
3 樱桃    红色   0.7
4   枣    棕色   0.6

合并数据框

现在,假设我们有一个包含营养信息的另一个数据框:

nutrition <- data.frame(
name = c("苹果", "香蕉", "樱桃", "枣"),
calories = c(52, 89, 50, 282)
)

# 合并两个数据框
fruit_info <- merge(fruits, nutrition, by = "name")
print(fruit_info)

这将给我们:

name  color price calories
1 苹果    红色   0.5       52
2 香蕉    黄色   0.3       89
3 樱桃    红色   0.7       50
4   枣    棕色   0.6      282

这难道不酷吗?我们已经将来自两个不同来源的信息合并成了一个全面的数据框!

熔化和铸造

现在,让我们进入一些更高级的重塑技术。我们将使用reshape2包来完成这些操作,所以请确保安装并加载它:

install.packages("reshape2")
library(reshape2)

熔化数据

熔化数据就像熔化一块冰——所有东西都变得流动,可以被重塑。让我们熔化我们的fruit_info数据:

melted_fruits <- melt(fruit_info, id.vars = "name")
print(melted_fruits)

这将给我们:

name variable  value
1   苹果    color    红色
2  香蕉    color  黄色
3  樱桃    color    红色
4    枣    color  棕色
5   苹果    price   0.50
6  香蕉    price   0.30
7  樱桃    price   0.70
8    枣    price   0.60
9   苹果  calories  52.00
10 香蕉  calories  89.00
11 樱桃  calories  50.00
12  枣  calories 282.00

看到每个属性(颜色、价格、卡路里)都变成了单独的行了吗?这对于某些类型的分析和可视化非常有用。

铸造熔化后的数据

现在我们已经熔化了数据,我们可以将其重塑成新的形状。假设我们想要水果作为列,属性作为行:

casted_fruits <- dcast(melted_fruits, variable ~ name)
print(casted_fruits)

这将给我们:

variable 苹果 香蕉 樱桃  枣
1    color   红色 黄色  红色 棕色
2    price  0.50   0.30  0.70  0.60
3  calories 52.00  89.00  50.00 282.00

印象深刻,对吧?我们彻底改变了我们的数据结构!

结论

恭喜你!你已经踏入了R语言数据重塑的世界。记住,就像用乐高积木建造一样,关键在于实验并找到最适合你需求的结构。不要害怕尝试这些函数——这是你真正学习的途径!

以下是我们涵盖的方法的快速参考表:

方法 函数 目的
添加列 $cbind() 向数据框添加新变量
添加行 rbind() 向数据框添加新观测
合并 merge() 合并来自不同数据框的数据
熔化 melt() 将宽数据重塑为长格式
铸造 dcast() 将长数据重塑为宽格式

继续练习,很快你将能够像一个雕塑大师一样重塑数据!快乐编码!

Credits: Image by storyset