gpt4 book ai didi

r - 使用 group_by 并从 dplyr 中汇总不包含 group_by 变量的所有行

转载 作者:行者123 更新时间:2023-12-05 01:29:59 24 4
gpt4 key购买 nike

我有一个 data.frame,例如

df1 <- data.frame(id = c("A", "A", "B", "B", "B"), 
cost = c(100, 10, 120, 102, 102)

我知道我可以使用

df1.a <- group_by(df1, id) %>%
summarise(no.c = n(),
m.costs = mean(cost))

通过 id 计算观测值的数量和平均值。如果我想计算观察值的数量以及不等于 ID 的所有行的平均值,我该怎么做,因此它会给我 3 作为观察值而不是 A 的值,2 作为观察值而不是 B 的值。

我想使用 dplyr 包和 group_by 函数,因为我必须使用它来处理很多巨大的数据帧。

最佳答案

您可以使用.来引用整个data.frame,它可以让您计算组与整体之间的差异:

df1 %>% group_by(id) %>% 
summarise(n = n(),
n_other = nrow(.) - n,
mean_cost = mean(cost),
mean_other = (sum(.$cost) - sum(cost)) / n_other)

## # A tibble: 2 × 5
## id n n_other mean_cost mean_other
## <fctr> <int> <int> <dbl> <dbl>
## 1 A 2 3 55 108
## 2 B 3 2 108 55

从结果中可以看出,对于两个组,您可以只使用 rev,但这种方法可以轻松扩展到更多组或计算。

关于r - 使用 group_by 并从 dplyr 中汇总不包含 group_by 变量的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40699053/

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