假设我有典型的实体汽车
class Car : Entity
{
public double MaxSpeed { get; set; }
public Color Color { get; set; }
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
这个实体,在我的域模型,将是根实体的的聚合.
现在让我们说我专攻汽车.我创造了一辆法拉利,法拉利的快乐车主喜欢用昵称来称呼他们:
class Ferrari : Car
{
public string Nickname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
假设我有另一个实体,即公司实体.它将是另一个Aggregate的根实体.有很多人在公司工作,由实体Person代表.人可能有车.但是一家公司的总裁通常都非常富有和这类人,他们有法拉利:
class President : Person
{
public Ferrari Ferrari { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我有实体总统,谁是内部的公司总结,那就是抱着法拉利,其他聚合的根实体的专业化的参考.
鉴于DDD,这是正确的吗?我是否应该将root实体本身的特化视为同一聚合的根实体?我的意思是,在我描述的领域,法拉利实体也是汽车综合体的根实体(因为法拉利也是一辆汽车)?
现在让我们说我必须 …
我想分组/分组/ bin数据:
C1 C2 C3
49488.01172 0.0512 54000
268221.1563 0.0128 34399
34775.96094 0.0128 54444
13046.98047 0.07241 61000
2121699.75 0.00453 78921
71155.09375 0.0181 13794
1369809.875 0.00453 12312
750 0.2048 43451
44943.82813 0.0362 49871
85585.04688 0.0362 18947
31090.10938 0.0362 13401
68550.40625 0.0181 14345
Run Code Online (Sandbox Code Playgroud)
我想用C2值进行存储,但我希望定义存储桶,例如<= 0.005,<=.010,<=.014等.正如您所看到的,存储区间将是不均匀的.我想要每桶的C1计数以及每个桶的C1总和.
我不知道从哪里开始,因为我是一个相当新的R用户.有没有人愿意帮我弄清楚代码或指导我一个能满足我需求的例子?
编辑:添加了另一列C3.我需要每桶的C3总和以及每桶的C1和数量
使用Python 3.6和Pandas 0.19.2:
我有一个DataFrame,包含用于事务的已解析日志文件.每一行都带有时间戳,包含一个transactionid,可以表示事务的开始或结束(因此每个transactionid有1行用于start,1行用于end).
每个终点线中还可以存在其他信息.
我想通过使用startdate减去结束日期来提取每个事务的持续时间,并保留其他信息.
样本输入:
import pandas as pd
import io
df = pd.read_csv(io.StringIO('''transactionid;event;datetime;info
1;START;2017-04-01 00:00:00;
1;END;2017-04-01 00:00:02;foo1
2;START;2017-04-01 00:00:02;
3;START;2017-04-01 00:00:02;
2;END;2017-04-01 00:00:03;foo2
4;START;2017-04-01 00:00:03;
3;END;2017-04-01 00:00:03;foo3
4;END;2017-04-01 00:00:04;foo4'''), sep=';', parse_dates=['datetime'])
Run Code Online (Sandbox Code Playgroud)
这给出了以下DataFrame:
transactionid event datetime info
0 1 START 2017-04-01 00:00:00 NaN
1 1 END 2017-04-01 00:00:02 foo1
2 2 START 2017-04-01 00:00:02 NaN
3 3 START 2017-04-01 00:00:02 NaN
4 2 END 2017-04-01 00:00:03 foo2
5 4 START 2017-04-01 00:00:03 NaN
6 3 END 2017-04-01 00:00:03 …Run Code Online (Sandbox Code Playgroud) tl; wr:这是一个讨论.
我知道这个"问题"更多的是讨论,因此我将其标记为社区维基.但是,根据" 如何询问"页面,它可能属于此处,因为它具体与编程相关,经过一个小时的研究后无法在网络上讨论,具体而言,与大多数C#程序员和主题相关.而且,这个问题本身就是为了获得答案,不管我的偏见,我都会保持开放的态度:C#真的会从总体结构中受益吗?尽管有这一前言,但我知道这是关闭的,但如果有权限和意图关闭的用户将我重定向到Web上的适当讨论点,我将不胜感激.
结构是C#中的灵活但有争议的类型.它们提供堆栈分配的值类型组织范例,但不提供其他值类型的不变性.
有人说结构应该代表值,而值不会改变(例如int i = 5;,5是不可变的),而有些人认为它们是带有子字段的OOP布局.
上结构不变性(辩论1,2,3),为此,当前的解决方案似乎具有程序员执行不变性,也没有解决.
例如,当结构作为引用(本页底部)访问并限制赋值时,C#编译器将检测可能的数据丢失.此外,由于结构构造函数,属性和函数能够执行任何操作,在返回控件之前使用限制(对于构造函数)分配所有字段,结构不能声明为常量,如果它们仅限于数据表示.
聚合类(维基百科)是严格的数据结构,功能有限,注定会因缺乏灵活性而在对应方面提供语法糖.在C++中,它们"没有用户声明的构造函数,没有私有或受保护的非静态数据成员,没有基类,也没有虚函数".尽管核心概念保持不变,但C#中此类类别的理论细节仍可供讨论.
由于聚合结构是严格的带有标记访问器的数据持有者,因此它们的不变性(在可能的C#环境中)将被保险.除非?指定了null运算符(),否则聚合也无法为空,无其他纯值类型.出于这个原因,许多非法的结构操作将成为可能,以及一些语法糖.
从C++语法中我们可以想象出以下几点:(记住,这是一个社区维基,欢迎并鼓励改进)
aggregate Size
{
int Width;
int Height;
}
aggregate Vector
{
// Default values for constructor.
double X = 0, Y = 0, Z = 0;
}
aggregate Color
{
byte R, G, B, …Run Code Online (Sandbox Code Playgroud) 我有一个对象集合,每个对象都有一个位字段枚举属性.我想要得到的是整个集合中位字段属性的逻辑OR.如何通过循环遍历集合(希望使用LINQ和lambda)来完成此操作?
这是我的意思的一个例子:
[Flags]
enum Attributes{ empty = 0, attrA = 1, attrB = 2, attrC = 4, attrD = 8}
class Foo {
Attributes MyAttributes { get; set; }
}
class Baz {
List<Foo> MyFoos { get; set; }
Attributes getAttributesOfMyFoos() {
return // What goes here?
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这样用.Aggregate:
return MyFoos.Aggregate<Foo>((runningAttributes, nextAttributes) =>
runningAttributes | nextAttribute);
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我无法弄清楚如何使用它来得到我想要的东西.有没有办法使用LINQ和一个简单的lambda表达式来计算这个,或者我只是在集合上使用循环?
注意:是的,这个示例案例很简单,基本foreach将是要走的路,因为它简单且不复杂,但这只是我实际使用的简化版本.
我有一个表,其中包含一系列与时间段相关的条目(具体来说,是为客户工作的时间):
task_time:
id | start_time | end_time | client (fk)
1 08/12/2011 14:48 08/12/2011 14:50 2
Run Code Online (Sandbox Code Playgroud)
我试图从我的Django应用程序聚合给定客户端的所有工作时间:
time_worked_aggregate = models.TaskTime.objects.\
filter(client = some_client_id).\
extra(select = {'elapsed': 'SUM(task_time.end_time - task_time.start_time)'}).\
values('elapsed')
if len(time_worked_aggregate) > 0:
time_worked = time_worked_aggregate[0]['elapsed'].total_seconds()
else:
time_worked = 0
Run Code Online (Sandbox Code Playgroud)
这似乎不优雅,但确实有效.或者至少我认为:事实证明它在PostgreSQL数据库上工作正常,但当我转移到SQLite时,一切都会消失.
一点挖掘表明,其原因是DateTimes不是SQLite中的一流数据.以下原始SQLite查询将完成我的工作:
SELECT SUM(strftime('%s', end_time) - strftime('%s', start_time)) FROM task_time WHERE ...;
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
我应该提一下,数据集是数千个条目; 以下不太实际:
sum([task_time.end_date - task_time.start_date for task_time in models.TaskTime.objects.filter(...)])
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个显示产品列表的Django站点,并按照他们收到的总票数对它们进行排序."产品"是一个类,"投票"是另一个类,其中一个名为score的字段可以是1,0或-1.我希望根据与每种特定产品相关的投票得分总和来订购产品.
这是我的models.py:
class Product(models.Model):
Content = models.TextField()
creation_date = models.DateTimeField( default=datetime.now )
total_votes = models.IntegerField( default=0 )
def __unicode__(self):
return self.content
class Vote(models.Model):
voter = models.ForeignKey( User )
product = models.ForeignKey( Product )
score = models.IntegerField( default=0, choices=VOTE_SCORE_CHOICES)
def __unicode__(self):
return '%s - %s : %s' % (self.product.id, self.voter, self.score)
Run Code Online (Sandbox Code Playgroud)
这是我的views.py:
def show_products( request):
product_list = Product.objects.all()
# set the field 'total_votes' in prduct to the sum of votes for each sentence
for p in product_list:
try:
v = Vote.objects.filter( …Run Code Online (Sandbox Code Playgroud) 分组时,ng-grid会创建与常规行不同的组行.特别是,组行不显示常规列,但显示由aggregateTemplate定义的单个合并行.我正在尝试做的是自定义组行以包括聚合列数据.例如:
列:
NAME | VALUE
数据:
name1 | 5
name1 | 5
name2 | 1
按NAME分组时显示的网格:
- name1 | 10(这是扩展的第一组行)
- name1 | 5(这些是实际的数据行)
- name1 | 5(这些是实际的数据行)
- name2 | 1(这是折叠的第二组行)
请注意,组行显示两列,其VALUE等于其子项的总和.
如果您熟悉ms excel数据透视表,那就是我正在尝试模拟的分组类型功能.
关于堆栈溢出的类似问题(如何使用ng-grid中的分组设置聚合)显示了如何进行子聚合计算的示例,但我仍然坚持如何让ng-grid像常规行一样显示输出有单独的列.看看ng-grid代码,它看起来不是一件容易的事.有人有这方面的经验吗?
谢谢!
我在尝试为以下代码示例正确自动完成时遇到了一些问题。我在 Win7 机器上使用 PHPStorm 7。
首先只是一个简单的类。
/**
* Class myObject
*/
class myObject
{
/**
* some method
*/
public function myMethod()
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个集合类,它可以包含先前类的多个实例并实现 ItteratorAggregate 接口。
/**
* Class myCollection
*/
class myCollection implements IteratorAggregate
{
/**
* @var myObject[]
*/
protected $_objects = array();
/**
* @param myObject $object
* @return myCollection
*/
public function add(myObject $object)
{
$this->_objects[] = $object;
return $this;
}
/**
* @return ArrayIterator
*/
public function getIterator()
{
return …Run Code Online (Sandbox Code Playgroud) 例如,我们有大量的对象列表,如下所示:
class KeyStatisticEntry:
def __init__(self, value=""):
self.usedBytes = len(value)
self.encoding = get_string_encoding(value)
@property
def total(self):
overhead = get_object_overhead(self.usedBytes)
if self.encoding == 'some value':
return overhead
else:
return self.usedBytes + overhead
@property
def aligned(self):
return some_func_with(self.usedBytes)
# Here is lots of calculated properties on basis of existing properties
Run Code Online (Sandbox Code Playgroud)
我们需要关注这个对象的许多矩阵 - 它的属性的最小值,最大值,总和,平均值,stdev值.目前我使用这样的代码:
used_bytes = []
total_bytes = []
aligned_bytes = []
encodings = []
for obj in keys.items():
used_bytes.append(obj.usedBytes)
total_bytes.append(obj.total)
aligned_bytes.append(obj.aligned)
encodings.append(obj.encoding)
total_elements = len(used_bytes)
used_user = sum(used_bytes)
used_real = sum(total_bytes)
aligned …Run Code Online (Sandbox Code Playgroud)