如何在 r 中使用 gather 函数(附示例)
Tidyr包中的Gather()函数可用于跨多个列“收集”键值对。
该函数使用以下基本语法:
收集(数据、键值等)
金子:
- data : 数据框的名称
- key :要创建的键列的名称
- value :要创建的值列的名称
- … :指定要从中收集的列
以下示例展示了如何在实践中使用此功能。
示例1:收集两列的值
假设我们在 R 中有以下数据框:
#create data frame df <- data. frame (player=c('A', 'B', 'C', 'D'), year1=c(12, 15, 19, 19), year2=c(22, 29, 18, 12)) #view data frame df player year1 year2 1 to 12 22 2 B 15 29 3 C 19 18 4 D 19 12
我们可以使用Gather()函数创建两个名为“year”和“points”的新列,如下所示:
library (tidyr) #gather data from columns 2 and 3 gather(df, key=" year ", value=" points ", 2:3) player year points 1 A year1 12 2 B year1 15 3 C year1 19 4 D year1 19 5 A year2 22 6 B year2 29 7 C year2 18 8 D year2 12
示例2:从两列以上收集值
假设我们在 R 中有以下数据框:
#create data frame df2 <- data. frame (player=c('A', 'B', 'C', 'D'), year1=c(12, 15, 19, 19), year2=c(22, 29, 18, 12), year3=c(17, 17, 22, 25)) #view data frame df2 player year1 year2 year3 1 A 12 22 17 2 B 15 29 17 3 C 19 18 22 4 D 19 12 25
我们可以使用gather()函数将第2、3和4列中的值“收集”到名为“year”和“points”的两个新列中,如下所示:
library (tidyr) #gather data from columns 2, 3, and 4 gather(df, key=" year ", value=" points ", 2:4) player year points 1 A year1 12 2 B year1 15 3 C year1 19 4 D year1 19 5 A year2 22 6 B year2 29 7 C year2 18 8 D year2 12 9 A year3 17 10 B year3 17 11 C year3 22 12 D year3 25
其他资源
Tidyr包的目标是创建“整洁”的数据,它具有以下特征:
- 每列都是一个变量。
- 每一行都是一个观察。
- 每个单元格都是一个唯一的值。
Tidyr 包使用四个主要函数来创建有序数据:
1. spread()函数。
2.gather ()函数。
3.separate ()函数。
4.unit ()函数。
如果掌握了这四个功能,您将能够从任何数据帧创建“整齐”的数据。