R的melt()和cast()函数-在R中重新排列数据
大家好,读者们!在本文中,我们将详细介绍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参数设置为数据框列名称,用于执行重塑操作。
One option:
例如:
在这个例子中,我们将使用库“MASS、reshape2和reshape”。创建了数据框之后,我们根据列A和B对数据框应用melt()函数。
rm(list = ls())
install.packages("MASS")
install.packages("reshape2")
install.packages("reshape")
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("Original data frame:\n")
print(data)
melt_data <- melt(data, id = c("A","B"))
print("Reshaped data frame:\n")
print(melt_data)
输出:
[1] "Original data frame:\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] "Reshaped data frame:\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()函数提供任何可用的聚合函数,如平均值、求和等。
示例:请用中文将以下内容进行改写,只需要一个选项:
The cat is sitting on the mat.
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("Original data frame:\n")
print(data)
melt_data <- melt(data, id = c("A"))
print("Reshaped data frame after melting:\n")
print(melt_data)
cast_data = cast(melt_data, A~variable, mean)
print("Reshaped data frame after casting:\n")
print(cast_data)
如上所述,我们已将mean作为聚合函数传递给cast()函数,并将变量等同于表示格式的变量进行设置。
产出:
[1] "Original data frame:\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] "Reshaped data frame after melting:\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] "Reshaped data frame after casting:\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