如何在 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 ()函数。

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

添加评论

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