标签: aggregate

我如何收到ruby活动记录的聚合查询?

使用ruby,露营webframework,activerecord-2.1.1,我的db结构是......

create_table :Conf_posts do |t|
  %w{title body username posttime hit passwd}.each do |col|
    t.column :"#{col}", :string
    end
end
Run Code Online (Sandbox Code Playgroud)

我想要每个用户名的总和

我有以下代码.

Post.find :all, :select => "username,sum(hit)", :from => "Conf_posts", :group => "username"
Run Code Online (Sandbox Code Playgroud)

我收到了以下结果.仅返回用户名:

[#<Conf::Models::Post username: "\352\260\225\355\230\201">, #<Conf::Models::Post username: "\353\215\225\352\267\234">, #<Conf::Models::Post username: "\353\225\214\355\230\270">, #<Conf::Models::Post username: "\353\263\264\353\236\214">, #<Conf::Models::Post username: "\354\230\201\352\262\275">, #<Conf::Models::Post username: "\354\232\260\353\236\214">, #<Conf::Models::Post username: "\354\235\270\354\204\235">, #<Conf::Models::Post username: "\354\240\225\355\231\224.">, #<Conf::Models::Post username: "\355\230\201\354\235\264">]
Run Code Online (Sandbox Code Playgroud)

我无法同时收到用户名和用户名的总和

ruby activerecord aggregate camping

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

单个SQL查询,返回相对于过去7天的"评论最多"的列表,但列表始终必须包含某些内容

首先看起来容易的东西现在变成了一个脑筋急转弯.

我正在构建您在新闻/博客网站右侧边栏中看到的"评论最多"或"最通过电子邮件"列表中的一个.

该列表必须与最近的日期范围(比如最近7天)相关,因为您希望列表始终保持新鲜并包含较新的内容.否则,收到大量评论的少数文章将始终位于列表顶部.

例如,在我的情况下,该网站有一些文章,每篇文章有几百个评论,但其余的都少于20.所以如果"最多评论"列表被拉出这样:

select
  ArticleId,
  count(CommentId) as Comments
from
  Comment
group by
  ArticleId
order by
  count(CommentId) desc
limit 10;
Run Code Online (Sandbox Code Playgroud)

然后,几篇有几百条评论的文章总是排在最前面.该列表永远不会改变.

所以我重新编写了select,包括过去7天:

select
  ArticleId,
  count(CommentId) as Comments
from
  Comment
where
  Created >= '2011-06-14'
group by
  ArticleId
order by
  count(CommentId) desc
limit 10;
Run Code Online (Sandbox Code Playgroud)

这看起来更好,但它仍然无法工作,因为它没有考虑过去7天内没有活动的情况.

如果在过去7天内没有发生任何事情(或只发生了一些评论),则该列表应包含此前的活动.底线 - 列表总是需要显示10篇文章.

我总是可以调用多个SQL语句,以7天的增量返回,直到我填写列表,但我不想这样做.我正在缓存进程内存中的结果,但我仍然希望尽可能只进行一次SQL调用.

思考?我觉得这很容易实现,我只是忽略了一个明显的地方.

mysql sql aggregate

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

R:不同级别的总和

我有一个数据集X:

customer_id event_type tot_count
931 1 5
231 2 6
231 1 3
333 3 9
444 1 1
931 3 3
333 1 21
444 2 43
Run Code Online (Sandbox Code Playgroud)

我需要一个总和customer_idevent_type水平.这是SQL中的1行代码:

select customer_id, event_type, sum(tot_count) from X group by 1,2
Run Code Online (Sandbox Code Playgroud)

我需要在R中进行相同的操作

aggregate r sum levels

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

计算按另一列分组的一列中的分类值

R新手在这里,所以请原谅我的无知.我的数据如下:

                                                                      JOB_ROLE       EXP_IT_NETW
1  Software engineering-related (developer, tester, project manager, architecture)        5<10
3                                                                        See below        None
4                                                                          Student          <1
5  Software engineering-related (developer, tester, project manager, architecture)         1<5
6                                                                          Blogger         10+
Run Code Online (Sandbox Code Playgroud)

我想计算第2列中每个值的实例,并按第1列对计数进行分组,以便结果如下所示:

JOB_ROLE           None    <1    1<5    5<10    10+
Software engineer    3      5     10     15     3
Student              10     7     5      1      0
...
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的任何想法?我的输出输出低于.提前致谢!

structure(list(JOB_ROLE = c("Software engineering-related (developer, tester, project manager, architecture)", 
"See below", "Student", "Software engineering-related (developer, tester, project manager, architecture)", 
"Blogger", "Systems Support", "Student", "IT/Network Administrator", 
"Software engineering-related …
Run Code Online (Sandbox Code Playgroud)

aggregate r

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

使用ddply计算组特征

我有一个与计算"组特征"相关的后续问题,没有ddply和merge

我有一个类似的数据框(如下所示),但试图计算同一类别中其他水果中腐烂水果的百分比.因此,我不应该考虑到有问题的水果本身是否腐烂.每个数据帧有希望澄清这一点,所需的结果列纯粹是为了示例目的而插入的.

理想情况下,我想使用ddply(沿着ddply(df,.(Fruit),mutate,Perc = sum(Rotten)/ length(Rotten))).但是,我找不到一种方法来只考虑同一组中其他行的值.我想我可以使用基于相关行的值的if语句组合,但我想知道是否有更优雅的方法来实现这一点?非常感谢,W

    Fruit Rotten Desired_Outcome
1   Apple      1            0.33
2   Apple      1            0.33
3   Apple      0            0.66
4   Apple      0            0.66
5    Pear      1            0.66
6    Pear      1            0.66
7    Pear      1            0.66
8    Pear      0            1.00
9  Cherry      0            0.00
10 Cherry      0            0.00
11 Cherry      0            0.00
12 Banana      1              NA

Fruit=c(rep("Apple",4),rep("Pear",4),rep("Cherry",3),"Banana")
Gender=c(rep("Male",3),rep("Female",3))
Rotten=c(1,1,0,0,1,1,1,0,0,0,0,1)
Desired_Outcome=c(0.33,0.33,0.66,0.66,0.66,0.66,0.66,1,0,0,0,NA)
df=data.frame(Fruit,Rotten,Desired_Outcome)     
df
Run Code Online (Sandbox Code Playgroud)

aggregate r plyr

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

如何在F#中汇总多个列表

在F#中,我有很多列表(它们的实际数量因输入数据而不同),我想对所有这些列表进行聚合(假设为了简化而添加).所以我想要实现的是List.map2或List.map3所做的事情,但是对于更多的列表.

我怎么处理它?我想知道这是否可以与List.scan一起使用?

f# aggregate list

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

如何输出重复的行

我有以下数据:

x1  x2  x3  x4
34  14  45  53 
2   8   18  17
34  14  45  20
19  78  21  48 
2   8   18  5
Run Code Online (Sandbox Code Playgroud)

在第1行和第3行; 第2列和第5列的列X1; X2,X3的值相等.如何仅输出4行,数字相同?输出应采用以下格式:

x1  x2  x3  x4
34  14  45  53
34  14  45  20
2   8   18  17
2   8   18  5
Run Code Online (Sandbox Code Playgroud)

如果不清楚,请问我问题.

附加问题:在输出中

x1  x2  x3  x4
34  14  45  53
34  14  45  20
2   8   18  17
2   8   18  5
Run Code Online (Sandbox Code Playgroud)

在最后一列中找到值的总和:

x1  x2  x3  x4
34  14  45  73
2 …
Run Code Online (Sandbox Code Playgroud)

aggregate r unique duplicates apply

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

根据列值为唯一(A,B)或共享(两个)组添加新列,并按ID分组

我的数据表格式如下:

id    source
1     A
1     B
2     A
3     B
4     A
4     B
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的列,该列按分组id并具有反映相应source值的值(即.A, B, or Both)both如果id对应于A和,将使用的位置B.

我希望输出如下:

id    source    source_group
1     A         both
1     B         both
2     A         A
3     B         B
4     A         both
4     B         both
Run Code Online (Sandbox Code Playgroud)

如果您可以将其作为通用目的来处理其他值source,例如A, B, C, D, ... etc.

compare group-by aggregate r

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

C#聚合在一个更好的时间复杂性

假设我们有这样一个数组:

var arr = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Run Code Online (Sandbox Code Playgroud)

我想执行聚合:

var sum = arr.Aggregate((a, b) => a + b);
Run Code Online (Sandbox Code Playgroud)

当然,这只是简化它的一个例子.我没有处理int,但需要合并的更复杂的对象(它们是树).但是,这种聚合效果非常糟糕,因为它从左向右迭代,添加了两个相互对立的元素.在int的情况下,这没有任何区别,但是在复杂对象的情况下,更好的解决方案是以树的方式执行聚合.这是什么意思?

                   55
              36         19
      10             26      19
  3       7      11      15      19
1   2   3   4   5   6   7   8   9   10
Run Code Online (Sandbox Code Playgroud)

我希望这个架构能够说清楚.

如何在C#的LINQ中实现这一目标?

c# linq aggregate

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

使用data.table将数据框与NAs聚合在一起

我有一个大data.framecharacter列和几个包含NA's的数字列.

以下是一些示例行:

df <- data.frame(id=rep("A",3),v1=c(NA,1,NA),v2=c(2,5,2),v3=c(NA,NA,NA),V4=c(0,0,0),stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)

由于df$id重复我想aggregate df通过df$id,并适用sum于所有其它列.

我这样做了:

require(data.table)
setDT(df)[,lapply(.SD, function(x) sum(x,na.rm=T)),by=.(id)]
Run Code Online (Sandbox Code Playgroud)

我得到这个:

   id v1 v2 v3 V4
1:  A  1  9  0  0
Run Code Online (Sandbox Code Playgroud)

所以列v3是所有NA's中df,并因此获得的价值0,这对我的问题,因为在这种情况下,我想保留NA的价值,但在所有其他情况下(其中聚集了数字和的混合NA的,显然我想删除NA'否则总和将是NA).如示例所示(df$v4)我有所有列0,因此我不能简单地用聚合替换所有的0's .NAdata.frame

换句话说,这是我期望的结果:

   id v1 v2 v3 V4
1:  A  1  9  NA 0
Run Code Online (Sandbox Code Playgroud)

知道如何实现这一目标data.table.SD …

aggregate r dataframe na data.table

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

标签 统计

aggregate ×10

r ×6

activerecord ×1

apply ×1

c# ×1

camping ×1

compare ×1

data.table ×1

dataframe ×1

duplicates ×1

f# ×1

group-by ×1

levels ×1

linq ×1

list ×1

mysql ×1

na ×1

plyr ×1

ruby ×1

sql ×1

sum ×1

unique ×1