gpt4 book ai didi

r - 在一个链中使用 dplyr 进行多个聚合(分类和数字)

转载 作者:行者123 更新时间:2023-12-04 13:59:32 24 4
gpt4 key购买 nike

今天我在想办法在 dplyr 中进行聚合时遇到了问题。在 R 中但由于某种原因无法提出解决方案(尽管我认为这应该很容易)。

我有一个这样的数据集:

structure(list(date = structure(c(16431, 16431, 16431, 16432, 
16432, 16432, 16433, 16433, 16433), class = "Date"), colour = structure(c(3L,
1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L), .Label = c("blue", "green",
"red"), class = "factor"), shape = structure(c(2L, 2L, 3L, 3L,
3L, 2L, 1L, 1L, 1L), .Label = c("circle", "square", "triangle"
), class = "factor"), value = c(100, 130, 100, 180, 125, 190,
120, 100, 140)), .Names = c("date", "colour", "shape", "value"
), row.names = c(NA, -9L), class = "data.frame")

显示如下:
        date colour    shape value
1 2014-12-27 red square 100
2 2014-12-27 blue square 130
3 2014-12-27 blue triangle 100
4 2014-12-28 green triangle 180
5 2014-12-28 green triangle 125
6 2014-12-28 red square 190
7 2014-12-29 red circle 120
8 2014-12-29 blue circle 100
9 2014-12-29 blue circle 140

我的目标是每天计算最常见的颜色、形状和平均值。我的预期输出如下:
        date colour    shape value
1 27/12/2014 blue square 110
2 28/12/2014 green triangle 165
3 29/12/2014 blue circle 120

我最终使用了 split并编写我自己的函数来计算上述 data.frame ,然后使用 snow::clusterApply并行运行它。它足够有效(我的原始数据集大约有 1000 万行长)但我想知道这是否会发生在 中。一链使用 dplyr .效率对此非常重要,因此能够在一个链中运行它非常重要。

最佳答案

你可以做

dat %>% group_by(date) %>%
summarize(colour = names(which.max(table(colour))),
shape = names(which.max(table(shape))),
value = mean(value))

关于r - 在一个链中使用 dplyr 进行多个聚合(分类和数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29836052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com