标签: aggregate

聚合根.兔子洞到底有多远

我正在尝试将Repository模式用于我当前的项目,而我目前正在尝试对域进行建模并找到聚合根.

我已经读过"级联删除"规则,该规则指出如果在删除根时删除成员没有意义,那么它不应该是根目录的一部分.

我将以警察事件为例: -

事件(聚合根) - 这可能包含调查人员,每个官员做的笔记.它还可能包含嫌疑人的受访日期列表.是否为此事件获得了闭路电视录像?每次看CCTV的日志和谁?是中央电视台为证据/法庭等制作的副本

似乎IncidentAggregate可能会变得庞大,因为它看起来一切都挂在那个事件上.

我的问题是双重的,聚合根应该管理多少,根源是一个好主意?

这可能不是一个特别好的例子,因为你可能永远不会删除类似警察事件的东西,但我希望它能更好地描述我的问题.

c# domain-driven-design aggregate aggregateroot repository-pattern

9
推荐指数
2
解决办法
1397
查看次数

R中的Aggregate()示例

我正在查看aggregateR中函数的帮助页面.我从未使用过这个便利功能,但我有一个过程应该可以帮助我加快速度.但是,我完全无法通过这个例子来理解发生了什么.

一个例子如下:

1> aggregate(state.x77, list(Region = state.region), mean)
         Region Population Income Illiteracy Life Exp Murder HS Grad  Frost   Area
1     Northeast       5495   4570      1.000    71.26  4.722   53.97 132.78  18141
2         South       4208   4012      1.738    69.71 10.581   44.34  64.62  54605
3 North Central       4803   4611      0.700    71.77  5.275   54.52 138.83  62652
4          West       2915   4703      1.023    71.23  7.215   62.00 102.15 134463
Run Code Online (Sandbox Code Playgroud)

这里的输出正是我所期望的.所以我试着了解发生了什么.所以我看看state.x77

1> head(state.x77)
           Population Income Illiteracy Life Exp Murder HS Grad Frost   Area
Alabama          3615   3624        2.1 …
Run Code Online (Sandbox Code Playgroud)

aggregate r

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

数据框所有行的平均列值

我有一个数据框,我从这样的文件中读取:

name, points, wins, losses, margin
joe, 1, 1, 0, 1
bill, 2, 3, 0, 4
joe, 5, 2, 5, -2
cindy, 10, 2, 3, -2.5
Run Code Online (Sandbox Code Playgroud)

等等

我想在这些数据的所有行中平均列值,是否有一种简单的方法在R中执行此操作?

例如,我想获得所有"Joe's"的平均列值,如下所示

joe, 3, 1.5, 2.5, -.5
Run Code Online (Sandbox Code Playgroud)

aggregate r dataframe

9
推荐指数
2
解决办法
9456
查看次数

R中重复行之间的平均值

我有一个数据框df,其行与名称列重复,但不是值列的重复:

name    value   etc1    etc2
A       9       1       X
A       10      1       X
A       11      1       X
B       2       1       Y
C       40      1       Y
C       50      1       Y
Run Code Online (Sandbox Code Playgroud)

我需要将重复的名称聚合成一行,同时计算值列的平均值.预期产量如下:

name    value   etc1    etc2
A       10      1       X
B       2       1       Y
C       45      1       Y
Run Code Online (Sandbox Code Playgroud)

我试过用,df[duplicated(df$name),]但当然这并没有给我重复的意思.我想使用aggregate(),但问题是此函数的FUN部分也将适用于所有其他列,并且除了其他问题之外,它将无法计算char内容.由于所有其他列都具有与"重复"相同的内容,因此我需要将它们聚合,就像名称列一样.任何提示......?

aggregate r duplicates mean

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

返回第一行组

我有一个由a组成的数据帧ID,对于组中的每个元素都是相同的,两个日期时间和这两者之间的时间间隔.其中一个日期时间对象是我的相关时间标记.现在我想获得数据帧的子集,其中包含每个组的最早条目.条目(尤其是时间间隔)需要保持不变.

我的第一种方法是根据1. ID和2.相关日期时间对帧进行排序.但是,我无法返回每个新组的第一个条目.

然后我一直在查看函数aggregate()以及ddply()函数但是我找不到两个选项,只返回第一个条目而不将聚合函数应用于时间间隔值.

是否有(简单)方法来实现这一目标?

附加:也许我不清楚添加我的aggregate()和ddply()注释.我不一定需要聚合.鉴于数据框的排序方式是每个新组的第一行是我要查找的行,只需返回一个子集,其中每一行的ID都与之前的ID不同(即每个新组的起始行).

示例数据:

structure(list(ID = c(1454L, 1322L, 1454L, 1454L, 1855L, 1669L, 
1727L, 1727L, 1488L), Line = structure(c(2L, 1L, 3L, 1L, 1L, 
1L, 1L, 1L, 1L), .Label = c("A", "B", "C"), class = "factor"), 
    Start = structure(c(1357038060, 1357221074, 1357369644, 1357834170, 
    1357913412, 1358151763, 1358691675, 1358789411, 1359538400
    ), class = c("POSIXct", "POSIXt"), tzone = ""), End = structure(c(1357110430, 
    1357365312, 1357564413, 1358230679, 1357978810, 1358674600, 
    1358853933, 1359531923, 1359568151), class = c("POSIXct", 
    "POSIXt"), tzone = ""), …
Run Code Online (Sandbox Code Playgroud)

aggregate r plyr

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

熊猫:将不同的功能应用于不同的列

当使用df.mean()时,我得到一个结果,其中给出了每列的平均值.现在让我们说我想要第一列的平均值,以及第二列的总和.有没有办法做到这一点?我不想拆卸和重新组装数据帧.

我最初的想法是按照pandas.groupby.agg()的方式做一些事情:

df = pd.DataFrame(np.random.random((10,2)), columns=['A','B'])
df.apply({'A':np.mean, 'B':np.sum}, axis=0)

Traceback (most recent call last):

  File "<ipython-input-81-265d3e797682>", line 1, in <module>
    df.apply({'A':np.mean, 'B':np.sum}, axis=0)

  File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3471, in apply
    return self._apply_standard(f, axis, reduce=reduce)

  File "C:\Users\Patrick\Anaconda\lib\site-packages\pandas\core\frame.py", line 3560, in _apply_standard
    results[i] = func(v)

TypeError: ("'dict' object is not callable", u'occurred at index A')
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.看起来传递一个字典会是一种直观的方式,但还有另一种方式(再次没有拆解和重新组装DataFrame)吗?

python aggregate pandas

9
推荐指数
2
解决办法
4461
查看次数

按组在R中的数据框上运行自定义函数

在使用自定义函数循环数据框中的组时遇到一些麻烦.

以下是一些示例数据:

set.seed(42)
tm <- as.numeric(c("1", "2", "3", "3", "2", "1", "2", "3", "1", "1"))
d <- as.numeric(sample(0:2, size = 10, replace = TRUE))
t <- as.numeric(sample(0:2, size = 10, replace = TRUE))
h <- as.numeric(sample(0:2, size = 10, replace = TRUE))

df <- as.data.frame(cbind(tm, d, t, h))
df$p <- rowSums(df[2:4])
Run Code Online (Sandbox Code Playgroud)

我创建了一个自定义函数来计算值w:

calc <- function(x) {
  data <- x
  w <- (1.27*sum(data$d) + 1.62*sum(data$t) + 2.10*sum(data$h)) / sum(data$p)
  w
  }
Run Code Online (Sandbox Code Playgroud)

当我在整个数据集上运行该函数时,我得到以下答案:

calc(df)
[1]1.664474
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想返回按tm分组的结果,例如:

tm     w
1    result of calc …
Run Code Online (Sandbox Code Playgroud)

aggregate r function dplyr

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

在Elasticsearch中查找重复项

我试图在我的数据中找到在多个方面相同的条目.我目前使用嵌套聚合的复杂查询来执行此操作:

{
  "size": 0, 
  "aggs": { 
    "duplicateFIELD1": { 
      "terms": { 
        "field": "FIELD1", 
        "min_doc_count": 2 },
      "aggs": { 
        "duplicateFIELD2": { 
          "terms": { 
            "field": "FIELD2", 
            "min_doc_count": 2 },
          "aggs": {
            "duplicateFIELD3": {
              "terms": {
                "field": "FIELD3",
                "min_doc_count": 2 },
              "aggs": {
                "duplicateFIELD4": {
                  "terms": {
                    "field": "FIELD4",
                    "min_doc_count": 2 },
                  "aggs": {
                    "duplicate_documents": { 
                      "top_hits": {} } } } } } } } } } } }
Run Code Online (Sandbox Code Playgroud)

这在某种程度上起作用,因为当没有找到重复项时,我得到的结果如下所示:

{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : …
Run Code Online (Sandbox Code Playgroud)

search nested aggregate duplicates elasticsearch

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

使用TOP BY GROUP BY之类的东西

table1如下表所示

+--------+-------+-------+------------+-------+
| flight |  orig |  dest |  passenger |  bags |
+--------+-------+-------+------------+-------+
|   1111 |  sfo  |  chi  |  david     |     3 |
|   1112 |  sfo  |  dal  |  david     |     7 |
|   1112 |  sfo  |  dal  |  kim       |     10|
|   1113 |  lax  |  san  |  ameera    |     5 |
|   1114 |  lax  |  lfr  |  tim       |     6 |
|   1114 |  lax  |  lfr  |  jake      |     8 | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate greatest-n-per-group

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

Pythonic将列表折叠/分组以聚合最大/最小值的方式

可以说我在python中有以下列表.首先按装备订购,然后按日期订购:

my_list = [
    {'Equip': 'A-1', 'Job': 'Job 1', 'Date': '2018-01-01'},
    {'Equip': 'A-1', 'Job': 'Job 1', 'Date': '2018-01-02'},
    {'Equip': 'A-1', 'Job': 'Job 1', 'Date': '2018-01-03'},
    {'Equip': 'A-1', 'Job': 'Job 2', 'Date': '2018-01-04'},
    {'Equip': 'A-1', 'Job': 'Job 2', 'Date': '2018-01-05'},
    {'Equip': 'A-2', 'Job': 'Job 1', 'Date': '2018-01-03'},
    {'Equip': 'A-2', 'Job': 'Job 3', 'Date': '2018-01-04'},
    {'Equip': 'A-2', 'Job': 'Job 3', 'Date': '2018-01-05'}
]
Run Code Online (Sandbox Code Playgroud)

我想要做的是按照设备的工作不变的每一组折叠列表,并抓住设备在那里的第一个和最后一个日期.例如,这个简单的例子应该改为:

list_by_job = [
    {'Equip': 'A-1', 'Job': 'Job 1', 'First': '2018-01-01', 'Last': '2018-01-03'},
    {'Equip': 'A-1', 'Job': 'Job 2', 'First': …
Run Code Online (Sandbox Code Playgroud)

python aggregate list-comprehension list

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