如何在 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 ()函数。
如果掌握了这四个功能,您将能够从任何数据帧创建“整齐”的数据。