R - 数据重塑:初学者指南
你好,未来的R语言程序员们!今天,我们将踏上一段激动人心的旅程,探索R语言中的数据重塑世界。如果你之前从未编写过程序,不用担心——我将作为你的友好向导,我们会一步一步地进行。在本教程结束时,你将能够像专业人士一样重塑数据!
什么是数据重塑?
在我们开始之前,让我们先聊聊数据重塑究竟是什么意思。想象你有一堆乐高积木。数据重塑就像重新排列这些积木以构建不同的结构。在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