如何在 dplyr 中使用 ungroup() (带有示例)


在使用 group_by ()函数汇总每组一个变量之后,您可以使用 dplyr 中的 ungroup ()函数对行进行取消分组。

下面的例子展示了如何在实际中使用这个功能。

示例:如何在 dplyr 中使用 ungroup()

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

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                 dots=c(14, 18, 22, 26, 36, 34),
                 assists=c(5, 4, 4, 8, 7, 3))

#view data frame
df

  team points assists
1 to 14 5
2 to 18 4
3 to 22 4
4 B 26 8
5 B 36 7
6 B 34 3

现在假设我们使用以下代码来计算按团队分组的平均分值

 library (dplyr)

#calculate mean of points, grouped by team
df_new <- df %>%
            group_by(team) %>%
            summarize(mean_points = mean(points)) %>%
            A group()

#view results
df_new

# A tibble: 2 x 2
  team mean_points
         
1 to 18
2 B 32

使用此语法,我们可以计算按球队分组的平均值,但我们丢失了助攻列。

为了保留helpers列,我们可以使用mutate()而不是summary() ,并且最后仍然使用ungroup()

 library (dplyr)

#calculate mean of points, grouped by team
df_new <- df %>%
            group_by(team) %>%
            mutate(mean_points = mean(points)) %>%
            A group()

#view results
df_new

# A tibble: 6 x 4
  team points assists mean_points
              
1 A 14 5 18
2 A 18 4 18
3 A 22 4 18
4 B 26 8 32
5 B 36 7 32
6 B 34 3 32

这次我们能够保留助攻列,并使用mutate()函数,我们简单地添加了一个名为Mean_points的新列,它显示每个团队的平均得分值。

由于我们还使用了ungroup()函数,因此我们可以对这个新数据框进行计算,而不必担心计算受到分组变量的影响。

如果我们不使用ungroup()函数,数据框中的行仍然会分组在一起,这可能会在我们稍后执行其他计算时产生意想不到的后果。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何使用dplyr过滤唯一值
如何使用 dplyr 按多个条件进行过滤
如何计算R中列中出现的次数

添加评论

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