如何在 r 中使用 spread 函数(附示例)


Tidyr包中的spread()函数可用于将键值对“传播”到多个列。

该函数使用以下基本语法:

传播(数据、键值)

金子:

  • data : 数据框的名称
  • key : 其值将成为变量名的列
  • value :将在从键创建的新变量下填充值的列

以下示例展示了如何在实践中使用此功能。

示例 1:将值分布在两列中

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (player= rep (c(' A ', ' B '), each= 4 ),
                 year= rep (c(1, 1, 2, 2), times= 2 ),
                 stat= rep (c(' points ', ' assists '), times= 4 ),
                 amount=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

  player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4

我们可以使用spread()函数将stat列值转换为它们自己的列:

 library (tidyr)

#spread stat column across multiple columns
spread(df, key=stat, value=amount)

  player year assists points
1 to 1 6 14
2 to 2 7 18
3 B 1 9 22
4 B 2 4 38

示例 2:将值分散到两列以上

假设我们在 R 中有以下数据框:

 #create data frame
df2 <- data. frame (player= rep (c(' A '), times= 8 ),
                 year= rep (c(1, 2), each= 4 ),
                 stat= rep (c(' points ', ' assists ', ' steals ', ' blocks '), times= 2 ),
                 amount=c(14, 6, 2, 1, 29, 9, 3, 4))

#view data frame
df2

  player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 1 steals 2
4 A 1 blocks 1
5 A 2 points 29
6 A 2 assists 9
7 A 2 steals 3
8 A 2 blocks 4

我们可以使用spread()函数将stat列中的四个唯一值转换为四个新列:

 library (tidyr)

#spread stat column across multiple columns
spread(df2, key=stat, value=amount)

  player year assists blocks points steals
1 A 1 6 1 14 2
2 A 2 9 4 29 3

其他资源

Tidyr包的目标是创建“整洁”的数据,它具有以下特征:

  • 每列都是一个变量。
  • 每一行都是一个观察。
  • 每个单元格都是一个唯一的值。

Tidyr 包使用四个主要函数来创建有序数据:

1. spread()函数。

2.gather ()函数。

3.separate ()函数。

4.unit ()函数。

如果掌握了这四个功能,您将能够从任何数据帧创建“整齐”的数据。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注