标签: aggregate

工作日/周/月的最佳提取日期,内存紧凑性?

执行摘要:*提高下面聚合fn调用中使用的基于日期的提取函数的内存效率; 不吹灭1Gb内存限制.*.

我有一个大的数据集TR存储在数据帧(3个COLS,1200万行;〜200MB)
的列CUSTOMER_ID(整数),VISIT_DATE和visit_spend(数字)数据集需要注册,所以这是因为它可以作为可再现的be:
数据集看起来像(完整文件在这里,需要注册):

customer_id,visit_date,visit_spend 
2,2010-04-01,5.97 
2,2010-04-06,12.71 
2,2010-04-07,34.52
#... 12146637 rows in total
Run Code Online (Sandbox Code Playgroud)

日期范围限制在2010-04-01 ... 2011-06-30(整数14700..15155)

在这里,我想问visit_date字段选择什么是最佳表示.我做了一些aggregate调用(底部的示例代码)来炸毁内存.我也使用日期实用程序fns,就像这里附带的东西(它们需要重新编码以获得紧凑性,但这些是我想做很多的典型操作).所以我需要一个代表避免这个的日期.

正如我所看到的,我可以使用三种可能的表示来访问visit_date字段,这里有优点和缺点,我正在尝试做什么.我的目标是获得不会破坏内存的格式,并在这些日期处理操作,聚合等方面给予最少的悲伤:

  • 整数因子
    缺点:
    1)不允许比较或排序操作,因此聚合是痛苦的.
    2)我需要硬编码所有与日期相关的功能(例如,2010年4月的14700..14729) - 可行但痛苦.
    3)需要手动处理图形.
  • 数字
    缺点:由于要求asDate()无处不在,因此会耗尽内存.
  • 日期
    优点:最适合打印(),图形和直方图; 在绘图之前不需要手动处理.
    缺点:如果我应用任何字符串操作(格式)或聚合,则会爆炸(内存不足).我认为这是chron :: Date,它是你设置class(tr$visit_date)<-'Date')或使用时得到的任何东西read.csv(colClasses=c(...,"Date",...)

这些是我希望运行很多的日期实用程序fns(但目前它们在聚合期间会爆炸):

# Utility fns related to date    
library(chron)    
# Get dayoftheweek as integer 0(Sun)..6(Sat)
dayofweek <- function(ddd) {
    with( month.day.year(ddd), day.of.week(month,day,year) …
Run Code Online (Sandbox Code Playgroud)

memory-management aggregate r date

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

有界背景找到了界限?

在我目前的项目(电子商务网站)中,我们有不同的有界背景,例如:结账过程中的结算,交付或付款.

除此之外,根据客户的购买要求,结账流程也会有所不同.因此,根据购物车的内容,结帐过程中的步骤数可能会有所不同,或者我们不会/将要求她提供某些信息.

那么,是否应该为每种不同类型的结账流程创建不同的有界上下文?

例如,订单聚合根将根据结帐流程EticketsOrder而不同(在此上下文中我们不需要递送地址,因此我们不会向用户询问)Ticket BillingAddress

ClothesOrder(在这种情况下,我们需要一个送货地址,在结账过程中还有一个额外的步骤来获得这个)衣服BillingAddress DeliveryAddress

这种分离意味着创建两个不同的域实体,即使它们具有相似的属性.

模拟这类问题的最佳方法是什么?如何找到上下文边界?

domain-driven-design aggregate bounded-contexts

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

R data.frame; 获取列中的值范围

我无法弄清楚如何做到这一点.我在R中有一个data.frame.它看起来像这样:

Scores <- read.table(text = "
        ID Test1 Test2 Test3 Final
1 Student1    20    23    21    48
2 Student2    16    15    18    36
3 Student3    25    20    22    40
4 Student4    14    19    18    42
5 Student5    10    15    14    30
")
Run Code Online (Sandbox Code Playgroud)

我想要的是创建一个新的数据对象,其中包含每个测试的值范围,包括final.所以它看起来像这样:

result <- read.table(text = "
       min max
Test1  10  25
Test2  15  23
Test3  14  22
Final  30  48
")
Run Code Online (Sandbox Code Playgroud)

老实说,无论是仅列出最大值和最小值,还是实际计算差值,我都无所谓.我只是无法找到实现这一点的方法,这不是一种不必要的复杂.我知道我可以手动和单独拉出列,但必须有一些更好的方法来做到这一点.有什么涉及by()tapply()?但我无法让他们工作.

有任何想法吗?

aggregate r

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

JSON数据聚合的最佳实践是什么?

假设我有以下格式的数据集:

var smallTestData = [
{"YEAR": "2009", "MONTH": "1", "CUSTOMER": "Customer1", "REVENUE": "1938.49488391425"},
{"YEAR": "2009", "MONTH": "1", "CUSTOMER": "Customer2", "REVENUE": "75.9142774343491"},
{"YEAR": "2009", "MONTH": "1", "CUSTOMER": "Customer2", "REVENUE": "99.3456067931875"} ...];
Run Code Online (Sandbox Code Playgroud)

现在,如果我想绘制一个D3或C3图表来显示每个客户每年和每月的累计收入,我想我最终会得到这样的结果:

   [{"yearMonth":"2009 1","revenueCustomer1":158989,"revenueCustomer2":68181},
    {"yearMonth":"2009 2","revenueCustomer1":171217,"revenueCustomer2":204975},
    {"yearMonth":"2009 3","revenueCustomer1":38477,"revenueCustomer2":46605} ...];
Run Code Online (Sandbox Code Playgroud)

当然,这看起来并不优雅,但那没什么.最糟糕的部分是基于多维度(例如,年,月,客户)的度量(例如收入)的聚合,这对于JSON数据来说是一件痛苦的事情.

我已经尝试编写自己的聚合函数来解决这个问题,但除了手动将值一起添加之外,找不到任何令人满意的解决方案.谁能引导我朝着正确的方向前进?您将如何汇总数据以适应我所描述的图表类型?有没有现成的解决方案?

既然我们正在讨论这个话题,您将如何基于主键加入两个或更多数据集?

谢谢!

json aggregate d3.js c3

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

计算每个受试者的平均值并重复每个受试者行的值

这是我第一次就堆栈溢出问一个问题.我试过寻找答案,但我找不到我想要的东西.我希望有人能帮帮忙.

我有一个20416观测的庞大数据集.基本上,我有83个科目,每个科目我有几个观察.然而,每个受试者的观察数量不相同(例如,受试者1具有256个观察结果,而受试者2仅具有64个观察结果).我想添加一个额外的列,其中包含每个主题的观察结果(观察结果是阅读时间(RT)).

我尝试使用聚合函数:

aggregate (RT ~ su, data, mean)
Run Code Online (Sandbox Code Playgroud)

该公式返回每个主题的正确平均值.但后来我不能简单地做到以下几点:

data$mean <- aggregate (RT ~ su, data, mean)
Run Code Online (Sandbox Code Playgroud)

因为R返回此错误:

$ < - .data.frame(tmp,"mean",value = list(su = 1:83,RT = c(378.1328125,:替换有83行,数据有20416)出错

我知道公式缺少一个命令,指定必须为所有主题行重复每个主题的平均值(例如,如果主题1有256行,则主题1的平均值必须重复256行,如果主题2有64行,主题2的平均值必须重复64行,依此类推).

我怎样才能在R中实现这一目标?

aggregate r mean

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

LinQ聚合错误 - 序列不包含任何元素

请帮帮我.我有一个具有许多过滤条件的LinQ查询.

以下是我的查询:

var Aggregate = linqkb.Where(s => s.Status.Equals("Approved")).Select(s => s.Approver)
    .Distinct()
    .Aggregate((i, j) => i + ";" + j)
    .Split(';')
    .Distinct();
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我收到错误:

Error Message : Sequence contains no elements
Stack Trace   : at System.Linq.Enumerable.Aggregate[TSource](IEnumerable`1 source, Func`3 func)
Run Code Online (Sandbox Code Playgroud)

我是linQ的新手.请建议.

我用Google搜索,并尝试使用 **.DefaultIfEmpty()**之前Aggregator,如下图所示:

var Aggregate = linqkb.Where(s => s.Status.Equals("Approved")).Select(s => s.Approver)
    .Distinct()
    .DefaultIfEmpty()
    .Aggregate((i, j) => i + ";" + j)
    .Split(';')
    .Distinct();
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

有什么建议?

c# linq aggregate sequence

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

C#Lambda OrderByDescending和Sum

我想按数量总和的降序对值列表进行排序,而不会覆盖数量的原始值.

所以,假设我的数据列表是:

Reason=Quality, Quantity=10
Reason=Quality, Quantity=10
Reason=Customer, Quantity=8
Reason=Carrier, Quantity=17
Reason=Customer, Quantity=1
Run Code Online (Sandbox Code Playgroud)

我如何执行lambda表达式来按总量排序?我希望得到以下内容:

Reason=Quality, Quantity=10
Reason=Quality, Quantity=10
Reason=Carrier, Quantity=17
Reason=Customer, Quantity=8
Reason=Customer, Quantity=1
Run Code Online (Sandbox Code Playgroud)

质量是第一位的,因为总价值是20.客户是最后的,因为总价值是1.

这就是我目前所拥有的,但无论如何都没有修改数据而不修改原始数据

eData.OrderByDescending(o => o.Quantity);
Run Code Online (Sandbox Code Playgroud)

我能想到完成这项任务的唯一方法是添加另一个变量并选择Select with Sum将所有新变量添加到该值,然后将OrderByDescending添加到该值上.但是,在我这样做之前,只想看看是否有更简单的方法.

c# lambda aggregate

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

如何基于行分组执行成对分割

我有一个数据框,通过以下方式:

df <- structure(list(celltype = structure(c(1L, 1L, 2L, 2L, 3L, 3L,
4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L), .Label = c("Bcells",
"DendriticCells", "Macrophages", "Monocytes", "NKCells", "Neutrophils",
"StemCells", "StromalCells", "abTcells", "gdTCells"), class = "factor"),
    sample = c("SP ID control", "SP ID treated", "SP ID control",
    "SP ID treated", "SP ID control", "SP ID treated", "SP ID control",
    "SP ID treated", "SP ID control", "SP ID treated", "SP ID control",
    "SP ID treated", "SP ID …
Run Code Online (Sandbox Code Playgroud)

aggregate r

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

如何计算而不在R中聚合

我在R中有一个大表,需要计算其中一列中值的出现次数,另外将计数放在它自己的列中.没有聚合.

所以,如果我有:

var
23456
34567
45678
23456
etc
Run Code Online (Sandbox Code Playgroud)

我的输出应该是:

var      count
23456     2
34567     1
45678     1
23456     2
etc
Run Code Online (Sandbox Code Playgroud)

我已经真正阅读了所有的线程,但似乎无法在没有聚合的情况下找到这样做的方法.我需要的是相当于excel的count(A1:A4;A1).

aggregate r count

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

连续计算连续失败及其开始和结束日期

我有一个带日期的data.frame并且失败。现在,我想计算每个时间段的连续失败以及开始日期和结束日期。

例如,

data <- data.frame(date = seq.Date(as.Date("2019-01-01"), by = "days",length.out = 14), 
                     fail = c(1,1,0,0,0,1,1,1,1,0,1,0,0,0))

         date fail
1  2019-01-01    1
2  2019-01-02    1
3  2019-01-03    0
4  2019-01-04    0
5  2019-01-05    0
6  2019-01-06    1
7  2019-01-07    1
8  2019-01-08    1
9  2019-01-09    1
10 2019-01-10    0
11 2019-01-11    1
12 2019-01-12    0
13 2019-01-13    0
Run Code Online (Sandbox Code Playgroud)

结果应该是

  duration      start        end
        2 2019-01-01 2019-01-02
        4 2019-01-06 2019-01-09
        1 2019-01-11 2019-01-11
Run Code Online (Sandbox Code Playgroud)

我尝试使用失败索引的差异来获得所需的结果。但是,我正在努力获得结果。关于任何帮助将不胜感激。

aggregate r counting sequence dataframe

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