首页 > 解决方案 > 使用 dplyr 分组、连接和返回 3 列

问题描述

以下是一些数据:

data = data.frame(
    name=c("bob", "bob", "mary", "ann", "ann", "ann"),
    colour=c("blue", "blue", "yellow", "green", "green", "blue"),
    number=c(2,2,3,4,4,4))

data

data %>% 
    group_by(name) %>% 
    summarise(colours = paste(unique(colour), collapse = ' '))

如何如上所述对这些数据进行分组但保留该列number?在 内data,所有 Bob 的意志 = 2、所有 Mary 的 = 3 和所有 Ann 的 = 4。因此,我只需要为每个唯一name值返回每个数字的第一个实例。

预期输出:

 name     colours number
1  ann green blue      4
2  bob       blue      2
3 mary     yellow      3

标签: rdplyr

解决方案


您有 2 个选项:

  1. 将数字添加到group_by, group_by(name, number)。这通常很好,因为如果您认为每个名称都对应一个数字的假设不正确,您将看到奇数组合。
  2. 汇总您的 中的数字summarise,选择您想要的值,例如,number = first(number)作为 中的附加语句summarise。这在计算上更有效,但如果您假设每个名称恰好对应一个数字是不正确的,您将得到意想不到的结果,或者您可能永远不会注意到。

推荐阅读