在 R 中将 DataFrame 从长格式重塑为宽格式
在本文中,我们将讨论如何在 R 编程语言中将数据帧从长格式重塑为宽格式。
数据帧中的数据由存储和检索发生的格式识别。数据帧中存在重复的键值对,可以使用以下方法重新排列。
方法 1:使用 reshape() 方法
R中的reshape方法用于对分组数据进行整形。它在基础 R 中可用。该方法基本上在不同格式之间重塑指定的数据帧,即“宽”格式在单独的列中进行重复测量,以及在单独的行中重复测量的“长”格式。
Syntax: reshape (data-frame, idvar = , timevar = , direction = )
Parameter :
- data-frame : The dataframe to reshape
- timevar : Indicator of the variable given in long format that differentiates multiple records from the same group.
- idvar : Indicator of the variable(s) in long format that identify multiple records from the same group.
- direction : specifies whether to depict data in “long” or “wide” format.
输出保留原始数据帧行号。缺失值在数据框中附加了 NA 值。
示例:从长到宽重塑数据框
R
# create first dataframe
data_frame1<-data.frame(col1=c(rep('Grp1',2),
rep('Grp2',2),
rep('Grp3',2)),
col2=rep(1:3,2),
col3 = letters[1:6]
)
print("Original DataFrame")
print(data_frame1)
# reshaping the data
data_frame_mod <- reshape(data_frame1, idvar = "col1",
timevar = "col2", direction = "wide")
print("Modified DataFrame")
print(data_frame_mod)
Python3
library("tidyr")
# create first dataframe
data_frame1 < -data.frame(col1=c(rep('Grp1', 2), rep('Grp2', 2), rep('Grp3', 2)),
col2=rep(1: 3, 2),
col3=letters[1:6]
)
print("Original DataFrame")
print(data_frame1)
# reshaping the data
data_frame_mod < - spread(data_frame1,
key=col2,
value=col3)
print("Modified DataFrame")
print(data_frame_mod)
输出:
[1] "Original DataFrame"
col1 col2 col3
1 Grp1 1 a
2 Grp1 2 b
3 Grp2 3 c
4 Grp2 1 d
5 Grp3 2 e
6 Grp3 3 f
[1] "Modified DataFrame"
col1 col3.1 col3.2 col3.3
1 Grp1 a b
3 Grp2 d c
5 Grp3 e f
方法二:使用 tidyr 包
可以使用以下语法将该包下载并安装到工作空间中:
install.packages("tidyr")
该包的 spread 方法可用于在 R 中将数据从长格式重新整形为宽格式。该方法用于为键列的每个唯一值附加一个新列。这些唯一的值集将构成新列的名称。
句法:
spread (data-frame, key, value)
示例:从长到宽重塑数据框
蟒蛇3
library("tidyr")
# create first dataframe
data_frame1 < -data.frame(col1=c(rep('Grp1', 2), rep('Grp2', 2), rep('Grp3', 2)),
col2=rep(1: 3, 2),
col3=letters[1:6]
)
print("Original DataFrame")
print(data_frame1)
# reshaping the data
data_frame_mod < - spread(data_frame1,
key=col2,
value=col3)
print("Modified DataFrame")
print(data_frame_mod)
输出:
col1 1 2 3
1 Grp1 a b
2 Grp2 d c
3 Grp3 e f