gpt4 book ai didi

r 相当于 group by 和立方体

转载 作者:行者123 更新时间:2023-12-04 10:14:10 25 4
gpt4 key购买 nike

一些sql数据库support with cube 修饰符用于group by 操作。我的没有这个功能。

基本上如果我有这样的数据集:

+------+-----------+---------+---------+
| sum | source_id | type_id | variety |
+------+-----------+---------+---------+
| 491 | 1 | 1 | 1 |
| 2008 | 1 | 2 | 1 |
| 33 | 1 | 3 | 1 |
| 483 | 1 | 4 | 1 |
| 482 | 1 | 5 | 1 |
| 343 | 1 | 6 | 1 |
| 4979 | 4 | 5 | 1 |
| 303 | 5 | 1 | 1 |
| 443 | 5 | 1 | 2 |
| 1295 | 5 | 2 | 1 |
...

我想将其导入到 r 中的数据框中,并为(source_id、type_id 和 variety)的所有子排列生成组合总和。因此,组合总和,其中 source_id=1,其中 source_id=1 和 type_id=1,其中 source_id=1 和 variety=1,其中 type_id=1 和 variety=1,其中 type_id=1,其中 source_id=2,依此类推.

我怎样才能最好地做到这一点?

最佳答案

您可以为此使用 ddply,并输入包含可能组合的列表,如下所示:

facs <- c("source_id","type_id","variety")

combs <- unlist(
mapply(function(j)combn(facs,j,simplify=F),1:3)
,recursive=F)

require(plyr)
datlist <- mapply(function(j)ddply(Data,j,summarize,sum(Sum)),combs)

require(reshape)
rbind.fill(datlist)

测试:

Data <- data.frame(
Sum=rpois(10,5),
source_id=rep(1:2,each=5),
type_id=rep(1:5,each=2),
variety=rep(1:2,5)
)

关于r 相当于 group by 和立方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733160/

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