标签: aggregate

DataRow []聚合函数C#

我在C#项目中有一个DataRow对象数组,我想从中总结各种字段.

我注意到DataRow [].Sum <>函数,而不是遍历每一行并总计我自己的总和,但我正在努力在网上找到关于如何使用它的任何资源.

任何正确方向的指针都会非常有用

:)删除代码示例,因为它是错误的!现在一切正常 - 链接帮助Marc欢呼.

c# aggregate

4
推荐指数
1
解决办法
9970
查看次数

LINQ JOIN + GROUP BY + SUM

我有两个LINQ语句,我想把它变成一个,但对于我的生活,我无法让它工作.

我不能让分组在第一个语句中工作.它抱怨说,TotalBuyTotalSell没有属性,虽然没有抱怨AmountTCAmountAUD.

这应该很简单.有什么想法吗?

var itineraryItems =
    from ii in this.ItineraryItemRecords
    join t in this.TransactionRecords on ii.OperatorID equals t.
    TransactionActor.OperatorID into g select new {
    OperatorID = ii.OperatorID, TotalBuy = g.Sum(i = >ii.TotalBuy)
        , TotalSell = g.Sum(i = >ii.TotalSell)
        , PaidTC = (0 - (g.Sum(t = >t.AmountTC)))
        , PaidAUD = (0 - (g.Sum(t = >t.AmountAUD)))
};

var itineraryItemz =
    from i in itineraryItems group i by i.OperatorID into g select new {
    OperatorID …
Run Code Online (Sandbox Code Playgroud)

c# linq group-by aggregate sum

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

不同时期的SQL sum()?

我正在处理存储过程.我有一个名为#CashFlow的表,其中包含一段时间的数据.

FundID   TradeDate Amount 
 1       1/1/2004  123.00 
 1       6/30/2006 100.00 
 2       1/1/2004  100.00 
 2       3/15/2010 150.00
 3       1/1/2010  100.00
Run Code Online (Sandbox Code Playgroud)

我还有一个名为#Funds的表,其中包含我感兴趣的基金ID列表.(有一堆处理我不会厌烦你为我生成这个基金列表)例如,我只想说我的#Funds表中只有ID的1和2(不包括3).

我有三个时间段(所有结束时间为'8/31/2010'),从1/1/2004,2006年1月1日和2010年1月1日开始,我想汇总这三个时期的总和.

我尝试过这样的事情:

select sum(c1.amount), sum(c2.amount), sum(c3.amount)
from 
    #fundtable f
inner join
    #cashflow c1 on f.fundid = c1.fundid and c1.tradedate between '1/1/2004' and '8/31/2010'
inner join
    #cashflow c2 on f.fundid = c2.fundid and c2.tradedate between '1/1/2006' and '8/31/2010'
inner join 
    #cashflow c3 on f.fundid = c3.fundid and c3.tradedate between '1/1/2010' and '8/31/2010'
Run Code Online (Sandbox Code Playgroud)

但它没有做我想要的事情(实际上我无法弄清楚它到底在做什么).如果我只选择一个句点,我会得到正确的值,但是第二个我添加了一个联接,我的数字全部被打破了.

这就像我想要替换的原始查询:

select 
   (select sum(Amount) from #Cashflow c inner …
Run Code Online (Sandbox Code Playgroud)

sql aggregate sql-server-2000

4
推荐指数
1
解决办法
4213
查看次数

我如何实现array :: max_size()?

我正在建立自己的array<T, n>课程模板,用于娱乐和教育.C++ 0x标准草案将max_size()所有容器的成员函数指定为distance(begin(), end())"对于最大可能的容器".如何为数组实现此成员函数?我只是简单地返回std::numeric_limits<std::size_t>::max(),还是结果取决于元素类型?


嗯,std::array从当前的g ++和boost::array返回n来自max_size():

#include <array>
#include <boost/array.hpp>
#include <iostream>

int main()
{
    std::array<int, 11> foo;
    std::cout << foo.max_size() << std::endl;   // prints 11

    boost::array<int, 11> bar;
    std::cout << bar.max_size() << std::endl;   // prints 11
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays stl aggregate c++11

4
推荐指数
1
解决办法
688
查看次数

我可以聚合数据帧并在R中保留字符串变量吗?

我有一个表格的数据框:

  Family Code Length Type
1      A    1     11 Alpha
2      A    3      8 Beta
3      A    3      9 Beta
4      B    4      7 Alpha
5      B    5      8 Alpha
6      C    6      2 Beta
7      C    6      5 Beta
8      C    6      4 Beta
Run Code Online (Sandbox Code Playgroud)

我想通过取长度值的平均值将数据集减少到包含Code的唯一值的数据集,但是也要保留所有字符串变量,即

  Family Code Length Type
1      A    1     11 Alpha
2      A    3    8.5 Beta
3      B    4      7 Alpha
5      B    5      8 Alpha
6      C    6   3.67 Beta
Run Code Online (Sandbox Code Playgroud)

我已经尝试过aggregate()和ddply(),但是这些似乎用NA替换了字符串,我正在努力找到解决这个问题的方法.

aggregate r plyr dataframe

4
推荐指数
1
解决办法
1796
查看次数

当n <2时,postgres STDDEV聚合行为

我的Postgres查询从一堆传感器读数计算统计聚合:

SELECT to_char(ipstimestamp, 'YYYYMMDDHH24') As row_name, 
to_char(ipstimestamp, 'FMDD mon FMHH24h') As hour_row_name, 
varid As category, 

(AVG(ipsvalue)::NUMERIC(5,2)) ||', ' || 
(MAX(ipsvalue)::NUMERIC(5,2))::TEXT  ||', ' || 
(MIN(ipsvalue)::NUMERIC(5,2))::TEXT  ||', ' || 
(STDDEV(ipsvalue)::NUMERIC(5,2))::TEXT  ||', ' As StatisticsValue 

FROM loggingdb_ips_integer As log 
JOIN ipsobjects_with_parent ips ON log.varid = ips.objectid 
AND (ipstimestamp > (now()- '2 days'::interval)) 
GROUP BY row_name, hour_row_name, category;
Run Code Online (Sandbox Code Playgroud)

只要我有> 1 ipsvalue/hour,这就可以正常工作.但是,如果每小时COUNT(ipsvalue)<2,则StatisticsValue返回NULL而没有任何Postgres错误.

如果我注释掉STTDEV,如下所示:

(AVG(ipsvalue)::NUMERIC(5,2)) ||', ' || 
(MAX(ipsvalue)::NUMERIC(5,2))::TEXT  ||', ' || 
(MIN(ipsvalue)::NUMERIC(5,2))::TEXT  ||', ' As value 
Run Code Online (Sandbox Code Playgroud)

然后正确计算所有三个统计数据.因此,我得出结论,非法STDDEV会导致整个查询失效.我宁愿让非法的STDDEV返回0.我试图COALESCE STDDEV线,但无济于事.可以做些什么?

postgresql statistics null aggregate standard-deviation

4
推荐指数
1
解决办法
7924
查看次数

多个表连接与聚合(mssql/sql server)

很简单的问题.我想要做的是从一个表中选择所有列,并从另一个表中选择一列(可能有多个匹配的行)的总和.

例:

table ta (eid, uid, name, year, etc, etc, etc)
table tb (eid, uid, name, year, amount, etc, etc)
Run Code Online (Sandbox Code Playgroud)

eid- 两个表之间不匹配uid, name, year- 将在两个表之间 匹配

所以我想从表中提取所有列ta,简单:

select * from ta where eid='value';
Run Code Online (Sandbox Code Playgroud)

我想从表tb到我的结果集加入amount列,简单:

select a.*, b.amount
from ta a
inner join tb b on a.year=b.year
where a.eid='value';
Run Code Online (Sandbox Code Playgroud)

太好了,这很好用.但是如果我在表tb中有多行呢?

执行:

select a.*, sum(b.amount)
from ta a inner join tb b on a.uid=b.uid
where a.year='value';
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

列'ta.eid'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.

所以我补充说:

select a.*, sum(b.amount)
from ta …
Run Code Online (Sandbox Code Playgroud)

sql sql-server join aggregate

4
推荐指数
1
解决办法
5947
查看次数

R:计算未来指定时间内特定事件的发生次数

我的简化数据如下所示:

set.seed(1453); x = sample(0:1, 10, TRUE)
date = c('2016-01-01', '2016-01-05', '2016-01-07',  '2016-01-12',  '2016-01-16',  '2016-01-20',
             '2016-01-20',  '2016-01-25',  '2016-01-26',  '2016-01-31')


df = data.frame(x, date = as.Date(date))


df 
x       date
1 2016-01-01
0 2016-01-05
1 2016-01-07
0 2016-01-12
0 2016-01-16
1 2016-01-20
1 2016-01-20
0 2016-01-25
0 2016-01-26
1 2016-01-31
Run Code Online (Sandbox Code Playgroud)

我想计算x == 1在指定时间段内出现的次数,例如距离当前日期的14天和30天(但不包括当前条目,如果是的话x == 1.所需的输出如下所示:

solution
x       date x_plus14 x_plus30
1 2016-01-01        1        3
0 2016-01-05        1        4
1 2016-01-07        2        3
0 2016-01-12        2        3
0 2016-01-16 …
Run Code Online (Sandbox Code Playgroud)

aggregate r date dplyr

4
推荐指数
1
解决办法
1315
查看次数

聚合效率低于循环?

我试图在一个大表上执行此操作,以计算data.table X中具有a和b的不同组合的行.

Y <- aggregate(c ~ a+b,X,length)
Run Code Online (Sandbox Code Playgroud)

虽然RAM使用率仍然存在,但它仍然需要永远(我在30分钟后停止).

然后我尝试手动循环遍历值b并仅聚合在一起a(技术上仍然聚合bb每次只有一个值):

sub_agg <- list()
unique_bs <- unique(X$b)
for (b_it in unique_bs){
sub_agg[[length(sub_agg)+1]] <- aggregate(c ~ a + b,subset(X, b == b_it),length)
}
Y <- do.call(rbind, sub_agg )
Run Code Online (Sandbox Code Playgroud)

我在3分钟内完成了.

我可以更进一步完全摆脱聚合,只对子集进行操作.

聚合效率是否低于嵌套循环和子集上的操作,或者这是一个特例吗?

聚合通常是占用时间最多的代码部分,所以我现在想要总是尝试循环,我想更好地理解这里发生的事情.

附加信息:

X有2000万行

b的50个不同值

a的15 000个不同的值

loops aggregate r

4
推荐指数
1
解决办法
342
查看次数

与最大值和因子汇总

我有一个包含因子列的data.frame,我想在其上计算最大值(或最小值或分位数).我不能在因素上使用这些功能,但我想.

这是一些例子:

set.seed(3)
df1 <- data.frame(id = rep(1:5,each=2),height=sample(c("low","medium","high"),size = 10,replace=TRUE))
df1$height <- factor(df1$height,c("low","medium","high"))
df1$height_num <- as.numeric(df1$height)
# > df1
#    id height height_num
# 1   1    low          1
# 2   1   high          3
# 3   2 medium          2
# 4   2    low          1
# 5   3 medium          2
# 6   3 medium          2
# 7   4    low          1
# 8   4    low          1
# 9   5 medium          2
# 10  5 medium          2
Run Code Online (Sandbox Code Playgroud)

我可以轻松地做到这一点:

aggregate(height_num ~ id,df1,max)
#   id height_num …
Run Code Online (Sandbox Code Playgroud)

aggregate r max min factors

4
推荐指数
1
解决办法
692
查看次数