R语言数据处理必备:melt()与cast()函数数据重塑完全指南

大家好,读者们!在本文中,我们将详细介绍R编程中一个重要的概念——使用R的melt()和cast()函数对数据进行重塑。

R中的melt()和cast()函数可以帮助我们将数据框内的数据按照任意自定义的形式重新调整。


使用 R 的 melt() 和 cast() 函数进行操作

让我们详细了解这两个功能。我们开始吧!

I. R 的 melt() 函数

在R编程中的melt()函数是一个内置函数。它使我们能够以用户定义的方式重新组织和延长数据框。它将数据值组织成长数据框格式。

看看下面的语法!

语法:

melt(data-frame, na.rm = FALSE, value.name = "name", id = 'columns')

我们将数据框传递给重新形态的函数,同时将na.rm参数设为默认值FALSE,表示NA值不会被忽略。

此外,我们将新变量/列名传递给value.name参数,以将从函数中获得的扩展值存储到其中。

ID参数设置为数据框列名称,用于执行重塑操作。

一个选项:

例如:

在这个例子中,我们将使用库”MASS、reshape2和reshape”。创建了数据框之后,我们根据列A和B对数据框应用melt()函数。

rm(list = ls()) # 清除工作空间中的所有对象

install.packages("MASS") # 安装MASS包 
install.packages("reshape2") # 安装reshape2包 
install.packages("reshape") # 安装reshape包 

library(MASS) # 加载MASS包 
library(reshape2) # 加载reshape2包 
library(reshape) # 加载reshape包 

 
A <- c(1,2,3,4,2,3,4,1) # 创建向量A 
B <- c(1,2,3,4,2,3,4,1) # 创建向量B 
a <- c(10,20,30,40,50,60,70,80) # 创建向量a 
b <- c(100,200,300,400,500,600,700,800) # 创建向量b 
data <- data.frame(A,B,a,b) # 创建数据框 

print("原始数据框:\n") # 打印原始数据框提示 
print(data) # 打印原始数据框 

melt_data <- melt(data, id = c("A","B")) # 使用melt函数重塑数据框 

print("重塑后的数据框:\n") # 打印重塑后数据框提示 
print(melt_data) # 打印重塑后的数据框 
   

输出:

[1] "原始数据框:\n"
  A B  a   b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800

[1] "重塑后的数据框:\n"
> print(melt_data) 
   A B variable value
1  1 1        a    10
2  2 2        a    20
3  3 3        a    30
4  4 4        a    40
5  2 2        a    50
6  3 3        a    60
7  4 4        a    70
8  1 1        a    80
9  1 1        b   100
10 2 2        b   200
11 3 3        b   300
12 4 4        b   400
13 2 2        b   500
14 3 3        b   600
15 4 4        b   700
16 1 1        b   800

II. R的cast()函数

如上所见,在应用melt()函数后,数据框被转换为一个拉长的数据框。为了恢复数据框的几乎原始和自然的形状,我们使用R的cast()函数。

cast()函数接受一个聚合函数和一个公式作为参数(这里的公式是在重塑后数据的表现方式),并将绵延或蜕变的数据框转换为接近聚合形式的数据框。

语法:

cast(data, formula, aggregate function)

我们可以为cast()函数提供任何可用的聚合函数,如平均值、求和等。

示例:猫正坐在垫子上。

rm(list = ls())

library(MASS) 
library(reshape2) 
library(reshape) 

A <- c(1,2,3,4,2,3,4,1) 
B <- c(1,2,3,4,2,3,4,1) 
a <- c(10,20,30,40,50,60,70,80) 
b <- c(100,200,300,400,500,600,700,800) 
data <- data.frame(A,B,a,b) 

print("原始数据框:\n") 
print(data) 

melt_data <- melt(data, id = c("A")) 

print("经过melt处理后的重塑数据框:\n") 
print(melt_data)

cast_data = cast(melt_data, A~variable, mean) 

print("经过cast处理后的重塑数据框:\n") 
print(cast_data)

如上所述,我们已将mean作为聚合函数传递给cast()函数,并将变量等同于表示格式的变量进行设置。

输出结果:

[1] "原始数据框:\n"
  A B  a   b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800

[1] "经过melt处理后的重塑数据框:\n"
   A variable value
1  1        B     1
2  2        B     2
3  3        B     3
4  4        B     4
5  2        B     2
6  3        B     3
7  4        B     4
8  1        B     1
9  1        a    10
10 2        a    20
11 3        a    30
12 4        a    40
13 2        a    50
14 3        a    60
15 4        a    70
16 1        a    80
17 1        b   100
18 2        b   200
19 3        b   300
20 4        b   400
21 2        b   500
22 3        b   600
23 4        b   700
24 1        b   800

[1] "经过cast处理后的重塑数据框:\n"
  A B  a   b
1 1 1 45 450
2 2 2 35 350
3 3 3 45 450
4 4 4 55 550

结论

至此,我们已经完成了这个话题的讨论。如果您有任何疑问,欢迎在下方评论区留言。

祝您学习愉快!

参考资料:

  • https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/melt
  • https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/cast
bannerAds