标签: aggregate

如何在ActiveRecord中与SUM连接

假设我有两个简单的模型

project
   t.string :title

vote
   t.references :project
   t.integer :value
Run Code Online (Sandbox Code Playgroud)

当我通过所有项目循环时,我也希望包括所有投票的总和,因为这样做

projects = Project.all

foreach project in projects
    sum = project.votes.sum(:value)
    ...
Run Code Online (Sandbox Code Playgroud)

是不是真的有效.

有没有办法如何在没有手动编写SQL的情况下执行此操作?就像是

SELECT p.*, SUM(v.value)
FROM projects p
LEFT JOIN votes v
ON v.project_id = p.id
GROUP BY p.id
Run Code Online (Sandbox Code Playgroud)

database activerecord join aggregate ruby-on-rails

3
推荐指数
1
解决办法
4730
查看次数

根据R中的三列聚合数据帧

我有一个数据框,其结构如下:

    V1    V2   V3       V4     
1   1.35  A  10241297 10459084
2  16.00  A  10241297 10459084
3   1.47  A  10241297 10459084
Run Code Online (Sandbox Code Playgroud)

我想基于V2,V3和V4对V1进行平均

我看到的所有聚合示例都是基于单个值处理聚合.

任何帮助表示赞赏

谢谢

aggregate r

3
推荐指数
1
解决办法
9629
查看次数

django-filter和聚合函数

这是一个应用程序特定的问题:django-filter,这里是对没有使用它的人的简要说明.

f = ProductFilter(request.GET, queryset=Product.objects.all())
Run Code Online (Sandbox Code Playgroud)

这条线为我们完成了所有过滤.ProductFilter是一个类,我们已经指定了过滤器(类似于表单的类).f是一个过滤器对象(基本上是我们要求的项目),其行为类似于列表.

现在,我想在这个对象上执行aggregate函数(Avg例如)f.您是否有任何想法如何实现?

python django aggregate filter

3
推荐指数
1
解决办法
853
查看次数

在R中使用聚合函数时,波形符和"by"之间的差异

每次我在data.frame上进行聚合时,我都默认使用"by = list(...)"参数.但我确实在stackoverflow和其他地方看到了解决方案,其中在"formula"参数中使用了tilde(〜).我有点看到"by"参数作为围绕这些变量的"枢轴".

在某些情况下,输出完全相同.例如:

aggregate(cbind(df$A, df$B, df$C), FUN = sum, by = list("x" = df$D, "y" = df$E))

AND

aggregate(cbind(df$A, df$B, df$C) ~ df$E, FUN = sum)
Run Code Online (Sandbox Code Playgroud)

两者之间有什么区别,你什么时候使用哪个?

aggregate r dataframe

3
推荐指数
1
解决办法
1010
查看次数

R data.table中的分组计数聚合

包含日期,购买价值和销售价值的表格.我想计算每天购买和销售的数量,以及购买和销售的总数.我发现在data.table中这有点棘手.

   date   buy sell      
2011-01-01  1   0
2011-01-02  0   0
2011-01-03  0   2
2011-01-04  3   0
2011-01-05  0   0
2011-01-06  0   0
2011-01-01  0   0
2011-01-02  0   1
2011-01-03  4   0
2011-01-04  0   0
2011-01-05  0   0
2011-01-06  0   0
2011-01-01  0   0
2011-01-02  0   8
2011-01-03  2   0
2011-01-04  0   0
2011-01-05  0   0
2011-01-06  0   5
Run Code Online (Sandbox Code Playgroud)

可以使用以下代码创建上述data.table:

 DT = data.table(
          date=rep(as.Date('2011-01-01')+0:5,3) , 
          buy=c(1,0,0,3,0,0,0,0,4,0,0,0,0,0,2,0,0,0),
          sell=c(0,0,2,0,0,0,0,1,0,0,0,0,0,8,0,0,0,5));
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

   date   total_buys   total_sells
2011-01-01    1            0
2011-01-02    0            2
                and so on  
Run Code Online (Sandbox Code Playgroud)

此外,我还想了解购买和销售的总数: …

aggregate r count data.table

3
推荐指数
1
解决办法
8548
查看次数

实体与聚合与聚合根

我正在努力识别Domain对象.

问题:

  • 公司有一个或多个站点
  • 网站有主要和多个联系人
  • 因此,公司有一个或多个联系人.这些联系人分配给站点.
  • 必须将联系人添加到站点而不是公司

我的理解:

public class Company : IEntity
    {
         public int CompanyId {get;}
         public string CompanyName {get;}
         //.....
    }

    public class Site : IEntity
    {
         public int SiteId {get;}
         public string SiteName {get;}
         //.....
    }

    public class Contact : IEntity
    {
        public int ContactId {get;}
        public string SurName {get;}
        public bool MainSiteContact {get;}//Confused!! May be this is not the right place
         //.....
    }

    public class SiteContact : IAggregate
    {
        public Site ASite { get; }
        public …
Run Code Online (Sandbox Code Playgroud)

c# entity domain-driven-design aggregate aggregateroot

3
推荐指数
1
解决办法
3555
查看次数

Python Pandas,从一个聚合多个列

我是熊猫的新手,我有一个这样的DataFrame:

    name    value
0   alpha   a
1   beta    b
2   gamma   c
3   alpha   a
4   beta    b
5   beta    a
6   gamma   a
7   alpha   c
Run Code Online (Sandbox Code Playgroud)

我想把它变成这样一种:

    name    a   b   c
0   alpha   2   0   1
1   beta    1   2   0
2   gamma   1   0   1
Run Code Online (Sandbox Code Playgroud)

也就是说我想按"名称"和"值"分组,然后计算它们,并为我找到的每个"值"值创建一列.

python aggregate pandas

3
推荐指数
1
解决办法
657
查看次数

熊猫:使用groupby获取每个数据类别的均值

我有一个如下所示的数据框:

>>> df[['data','category']]
Out[47]: 
          data     category
  0       4610            2
 15       4610            2
 22       5307            7
 23       5307            7
 25       5307            7
...        ...          ...
Run Code Online (Sandbox Code Playgroud)

数据和类别都是数字,所以我能够这样做:

>>> df[['data','category']].mean()
Out[48]: 
data        5894.677985
category      13.805886
dtype: float64
Run Code Online (Sandbox Code Playgroud)

而我正试图获得每个类别的平均值.它看起来很直接,但当我这样做时:

>>> df[['data','category']].groupby('category').mean()
Run Code Online (Sandbox Code Playgroud)

要么

>>> df.groupby('category')['data'].mean()
Run Code Online (Sandbox Code Playgroud)

它返回如下错误:

DataError: No numeric types to aggregate
Run Code Online (Sandbox Code Playgroud)

如果我用上面的两个函数替换,则没有错误.count().

我做错了什么?获得每个类别的平均值的正确方法是什么?

python aggregate mean pandas

3
推荐指数
2
解决办法
1万
查看次数

R:具有重复的数据帧上的扩展函数

我有一个数据框,我需要转动,但数据框有重复的标识符,所以spread函数给出一个错误Error: Duplicate identifiers for rows (5, 6)

Dimension = c("A","A","B","B","A","A")   
Date = c("Mon","Tue","Mon","Wed","Fri","Fri")    
Metric = c(23,25,7,9,7,8)
df = data.frame(Dimension,Date,Metric)
df

  Dimension Date Metric
1         A  Mon     23
2         A  Tue     25
3         B  Mon      7
4         B  Wed      9
5         A  Fri      7
6         A  Fri      8

library(tidyr)
df1 = spread(df, Date, Metric, fill = " ")

Error: Duplicate identifiers for rows (5, 6)
Run Code Online (Sandbox Code Playgroud)

然后我合并了行并粘贴了Metric:

dfa = aggregate(df[3], df[-3], 
                FUN = function(X) paste(unique(X), collapse=", ")) …
Run Code Online (Sandbox Code Playgroud)

aggregate r spread dplyr tidyr

3
推荐指数
1
解决办法
5710
查看次数

并行聚合集合

我已经看到了基本类型的并行聚合代码,例如

Parallel.For<int>(0, result.Count, () => 0, (i, loop, subtotal) =>
    {
        subtotal += result[i];
        return subtotal;
    },
    (x) => Interlocked.Add(ref sum, x)
);
Run Code Online (Sandbox Code Playgroud)

我想知道是否有相同的列表/其他集合,例如:

List<Result> AllResults;
Parallel.ForEach(allIDs, (currentID) =>
{

    subList.add(GetResultFor(currentID));
    return subList;
},
(x) =>
{
    lock(AllResults)
        AllResults.AddRange(subList);
};
Run Code Online (Sandbox Code Playgroud)

我猜测没有什么好看和整洁,但我想不出另一种做法,当然不是通过一个标准的parralel.ForEach因为我不能想到你会怎么说"这个核心有这个范围,这个核心这个范围"....

c# parallel-processing aggregate parallel.foreach

3
推荐指数
1
解决办法
1954
查看次数