标签: aggregate

评估Oracle中一组数字的平均绝对偏差

我正在尝试实现一个程序来评估一组数字的中位数绝对偏差(通常通过GROUP BY子句获得).

我想要使​​用它的查询示例是:

select id, mad(values) from mytable group by id;
Run Code Online (Sandbox Code Playgroud)

我将通过聚合函数示例,但有点困惑,因为函数需要在完成所有迭代之前知道所有数字的中位数.

任何关于如何实现这样的功能的指针都将非常感激.

sql oracle aggregate

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

用聚合解决ddply任务的优雅方法(希望获得更好的性能)

我想data.frame通过一个名为变量的标识符变量来聚合ensg.数据框如下所示:

  chromosome probeset               ensg symbol    XXA_00    XXA_36    XXB_00
1          X  4938842 ENSMUSG00000000003   Pbsn  4.796123  4.737717  5.326664
Run Code Online (Sandbox Code Playgroud)

我想计算具有相同ensg值的行上每个数字列的平均值.这里的问题是我想保留其他身份变量染色体和符号不变,因为它们也是相同的ensg.

最后,我想有一个data.frame带有标识列chromosome,ensg,symbol并在具有相同标识符行数值列的意思.我实现了这个ddply,但与以下相比它非常慢aggregate:

spec.mean <- function(eset.piece)
  {
    cbind(eset.piece[1,-numeric.columns],t(colMeans(eset.piece[,numeric.columns])))
  }
t
mean.eset <- ddply(eset.consensus.grand,.(ensg),spec.mean,.progress="tk")
Run Code Online (Sandbox Code Playgroud)

我的第一个聚合实现看起来像这样,

mean.eset=aggregate(eset[,numeric.columns], by=list(eset$ensg), FUN=mean, na.rm=TRUE);
Run Code Online (Sandbox Code Playgroud)

并且要快得多.但问题aggregate是我必须重新描述描述变量.我还没有弄清楚如何使用我的自定义函数,aggregate因为aggregate它不传递数据帧而只传递矢量.

是否有一种优雅的方式来做到这一点aggregate?或者有更快的方法来做到这一点ddply

aggregate r plyr

7
推荐指数
2
解决办法
1992
查看次数

R中有几个变量的频率表

我试图复制官方统计中经常使用的表,但到目前为止没有成功.给定像这样的数据帧:

d1 <- data.frame( StudentID = c("x1", "x10", "x2", 
                          "x3", "x4", "x5", "x6", "x7", "x8", "x9"),
             StudentGender = c('F', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'M', 'M'),
             ExamenYear    = c('2007','2007','2007','2008','2008','2008','2008','2009','2009','2009'),
             Exam          = c('algebra', 'stats', 'bio', 'algebra', 'algebra', 'stats', 'stats', 'algebra', 'bio', 'bio'),
             participated  = c('no','yes','yes','yes','no','yes','yes','yes','yes','yes'),  
             passed      = c('no','yes','yes','yes','no','yes','yes','yes','no','yes'),
             stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)

我想创建一个表格,显示每年,所有学生(所有)和女性,参与者和通过的人数.请注意下面的"ofwhich"指的是所有学生.

我想到的一张桌子看起来像这样:

cbind(All = table(d1$ExamenYear),
  participated      = table(d1$ExamenYear, d1$participated)[,2],
  ofwhichFemale     = table(d1$ExamenYear, d1$StudentGender)[,1],
  ofwhichpassed     = table(d1$ExamenYear, d1$passed)[,2])
Run Code Online (Sandbox Code Playgroud)

我相信在R.这种事情有更好的方法.

注意:我已经看过LaTex解决方案,但我没有使用这对我有用,因为我需要在Excel中导出表.

提前致谢

aggregate r frequency

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

SQL "SELECT * FROM table GROUP BY c1, c2" 的 R 等价物是什么?

我想将我的数据框(编辑:以 CPU 高效的方式)减少到具有 c3、c4 对唯一值的行,同时保留所有列。换句话说,我想转换我的数据框

> df <- data.frame(c1=seq(7), c2=seq(4, 10), c3=c("A", "B", "B", "C", "B", "A", "A"), c4=c(1, 2, 3, 3, 2, 2, 1))
  c1 c2 c3 c4
1  1  4  A  1
2  2  5  B  2
3  3  6  B  3
4  4  7  C  3
5  5  8  B  2
6  6  9  A  2
7  7 10  A  1
Run Code Online (Sandbox Code Playgroud)

到数据框

  c1 c2 c3 c4
1  1  4  A  1
2  2  5  B …
Run Code Online (Sandbox Code Playgroud)

sql aggregate r data.table

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

在R中的数据帧列表中取列均值

这就是我想要做的.我的数据框有一个因子变量"country",我想根据国家/地区拆分数据框.然后,我想对每个国家/地区的数据框的每个变量采用列均值.

数据在这里:https://github.com/pourque/country-data

到目前为止我已经这样做了......

myList <- split(df1, df1$country)
for(i in 1:length(myList)) {
aggregate <- mapply(myList[[i]][,-c(38:39)], colMeans)
}
Run Code Online (Sandbox Code Playgroud)

(我不包括第38和第39列,因为这些是因素.)

我已经读过这个(多个列表中的函数),这让我觉得mapply就是这里的答案......但是我收到了这个错误:

Error in match.fun(FUN) : 
'myList[[i]][, -c(38:39)]' is not a function, character or symbol 
Run Code Online (Sandbox Code Playgroud)

也许我的格式不正确?

aggregate r list group-summaries dataframe

7
推荐指数
3
解决办法
3366
查看次数

PostgreSQL 在一个查询中获取事件发生的每日、每周和每月平均值

目前我有这个相当大的查询

  1. 通过获取count()按事件名称和日期分组的事件,将每日、每周、每月计数聚合到中间表中。
  2. 通过avg()按事件分组来选择每个中间表的平均计数,对结果进行联合,并且因为我想为每天、每周、每月设置一个单独的列,将填充值 0 放入空列中。
  3. 然后我对所有列求和,0 基本上充当空操作,这给我每个事件的单个值。

查询虽然很大,但我觉得我正在做很多重复的工作。有什么办法可以更好地执行此查询或使其更小吗?我以前没有真正做过这样的查询,所以我不太确定。

WITH monthly_counts as (
  SELECT
    event,
    count(*) as count
  FROM tracking_stuff
  WHERE
    event = 'thing'
    OR event = 'thing2'
    OR event = 'thing3'
  GROUP BY event, date_trunc('month', created_at)
),
weekly_counts as (
  SELECT
    event,
    count(*) as count
  FROM tracking_stuff
  WHERE
    event = 'thing'
    OR event = 'thing2'
    OR event = 'thing3'
  GROUP BY event, date_trunc('week', created_at)
),
daily_counts as (
  SELECT
    event,
    count(*) as count
  FROM tracking_stuff
  WHERE …
Run Code Online (Sandbox Code Playgroud)

sql postgresql analytics aggregate query-optimization

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

R中每个id的最早日期

我有一个数据集,其中每个人(id)都有一个e_date,并且因为每个人都可以拥有多个e_date,所以我试图获得每个人的最早日期.所以基本上我想有一个数据集,每个id每行显示一行,显示他最早的e_date值.我使用聚合函数来查找最小值,我创建了一个组合日期和id的新变量,最后我使用创建的新变量基于包含最小值的原始数据集进行子集化.我来这个:

new <- aggregate(e_date ~ id, data_full, min)

data_full["comb"] <- NULL
data_full$comb <- paste(data_full$id,data_full$e_date)

new["comb"] <- NULL
new$comb <- paste(new$lopnr,new$EDATUM)

data_fixed <- data_full[which(new$comb %in% data_full$comb),]
Run Code Online (Sandbox Code Playgroud)

第一件事是聚合函数似乎根本不起作用,它减少了行数但查看数据我可以清楚地看到一些id出现不同的e_date不止一次.另外,当我使用as.Date格式而不是日期(整数)的原始格式时,代码给出了不同的结果.我认为答案很简单,但我很震惊.

aggregate r date

7
推荐指数
2
解决办法
7439
查看次数

如何对 pandas 中按分类列分组的值求和?

我的数据有一个分类列,该列将数据和其他列分组在 dataframe 中df

id      subid      value
1       10         1.5
1       20         2.5
1       30         7.0 
2       10         12.5
2       40         5
Run Code Online (Sandbox Code Playgroud)

subid我需要的是一列,其中包含每个中每个值的平均值id。例如df可以是:

id      subid      value     id_sum    proportion
1       10         1.5       11.0      0.136
1       20         2.5       11.0      0.227
1       30         7.0       11.0      0.636
2       10         12.5      17.5      0.714
2       40         5         17.5      0.285
Run Code Online (Sandbox Code Playgroud)

现在,我尝试通过执行以下操作来获取 id_sum 列:

df['id_sum'] = df.groupby('id')['value'].sum()
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有像希望的那样发挥作用。我的最终目标是获得proportion专栏。获得它的正确方法是什么?

python aggregate pandas

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

MongoDB Compass 中的聚合方法?

如标题所述,我在使用聚合方法从 MongoDB Compass 查询时遇到了一些问题。我有一个这种形式的文件集合:

{"Array":[{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},...]}
Run Code Online (Sandbox Code Playgroud)

使用 mongo shell 或 Studio 3T 软件我用聚合方法查询它,下面是一个例子:

db.collection.aggregate([
     { $match: {"Array.field": "val"}}, 
     { $unwind: "$Array"},
     { $match: {"Array.field": "val"}},
     { $group: {_id: null, count: {$sum:NumberInt(1)}, Array: {$push: "$Array"}}},
     { $project: {"N. Hits": "$count", Array:1}}
])
Run Code Online (Sandbox Code Playgroud)

我在其中查找具有字段值 = "val" 的 Array 元素并对其进行计数。这很好用,但我不知道如何在 MongoDB Compass 中做同样的事情 在此处输入图片说明

在查询栏中,我有“过滤器”、“项目”和“排序”,我可以进行常规查询,但我不知道如何使用聚合方法。谢谢

aggregate mongodb mongodb-compass

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

如何总结保留所有列的数据框

考虑以下数据框:

\n
dummy_df <- tibble(\n  A=c("ABC", "ABC", "BCD", "CDF", "CDF", "CDF"),\n  B=c(0.25, 0.25, 1.23, 0.58, 0.58, 0.58),\n  C=c("lorem", "ipsum", "dolor", "amet", "something", "else"),\n  D=c("up", "up", "down", "down", "down", "down"),\n  E=c(132, 132, 243, 512, 512, 512),\n  F=c("m1", "m1", "m5", "m3", "m3", "m3"),\n  G=c("val", "val", "mur", "mad", "mad", "mad"),\n  H=c("grx", "grx", "bcn", "sal", "sal", "sal"),\n  I=c(1.68, 1.68, 2.31, 3.12, 3.12, 3.12),\n  J=c("p", "p", "f", "p", "p", "p"),\n  K=c(100, 100, 200, 143, 143, 143)\n)\n\n# A tibble: 6 \xc3\x97 11\n  A         B C         D …
Run Code Online (Sandbox Code Playgroud)

group-by aggregate r dplyr data-wrangling

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