r - 使用 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
解决方案
您有 2 个选项:
- 将数字添加到
group_by
,group_by(name, number)
。这通常很好,因为如果您认为每个名称都对应一个数字的假设不正确,您将看到奇数组合。 - 汇总您的 中的数字
summarise
,选择您想要的值,例如,number = first(number)
作为 中的附加语句summarise
。这在计算上更有效,但如果您假设每个名称恰好对应一个数字是不正确的,您将得到意想不到的结果,或者您可能永远不会注意到。
推荐阅读
- windows-server-2012-r2 - Woff2 字体在 Windows Server 2012R2 上的 cefsharp 中消失了
- python-3.x - 如何从列表列表中的列表中提取最后一项?(Python)
- haskell - 什么干扰了我的作用域类型变量?
- javascript - 条件语句数组循环
- regex - 正则表达式查找常规句子与标题
- windows - Windows 内核使用 \Device\HarddiskVolume5 或其他一些数字磁盘作为 OBJECT_ATTRIBUTES 的 RootDirectory
- arrays - 为什么用`printf`加入数组会在终端和脚本中给出不同的结果?
- apache-nifi - 将来自 2 个不同处理器的内容和属性传递给 InvokeHttp 处理器
- r - R时间序列数据:绘制多个批次
- javascript - 使用 Typescript 进行条件输入