这是一个缺少值的简单数据框:
M = data.frame( Name = c('name','name'), Col1 = c(NA,1) , Col2 = c(1,1))
当我以这种方式将聚合应用于M时:
aggregate(.~Name, M, FUN=sum, na.rm=TRUE)
结果是:
RowName Col1 Col2
name 1 1
Run Code Online (Sandbox Code Playgroud)
因此忽略整个第一行.但如果我这样做
aggregate(M[,2:3], by=list(M$Name), FUN=sum, na.rm=TRUE)
结果是
Group.1 Col1 Col2
name 1 2
Run Code Online (Sandbox Code Playgroud)
因此只忽略(1,1)条目.
这引起了我的一个代码中的主要调试问题,因为我认为这两个调用是等效的.是否有充分的理由为什么"公式"输入方法被区别对待?
谢谢.
我有一个具有编辑器和项目概念的域模型.
编辑拥有许多项目,项目不仅有编辑所有者,还有许多编辑成员.因此,编辑还有一些"加入"项目.
我正在采用DDD方法对此进行建模并使用Repository模式进行持久化.但是,我还没有足够好地确定模式,以确定我应该如何做到这一点.
我正在假设编辑器和项目可能在同一个聚合中,其中根是编辑器.因此,我可以获得一个编辑器,然后枚举其项目,并可以从那里枚举项目的成员编辑.
但是,如果我只被允许从我的存储库中检索编辑器,这是不是意味着当我获得拥有它们的编辑器时我必须从存储库加载所有项目?如果我想延迟加载成员编辑器,项目还需要对存储库的引用?
或者,如果我拆分聚合并拥有一个编辑器存储库和一个项目存储库,那么我应该如何处理两者之间的事务,例如将新项目添加到编辑器中?例如:
Editor e = new Editor("Editor Name");
editorRepository.Add(e);
Project p = e.CreateProject("Project Name");
projectRepository.Add(p); // These two lines
editorRepository.Save(e); // should be atomic
Run Code Online (Sandbox Code Playgroud)
我是否误解了Repository模式的意图?
domain-driven-design aggregate lazy-loading ddd-repositories repository-pattern
这是对r-help邮件列表中提出的问题的回应.
以下是如何使用组查找顶级值的大量示例sql
,因此我认为使用R sqldf
包可以轻松转换该知识.
一个例子:当mtcars
按时分组时cyl
,这里是每个不同值的前三个记录cyl
.请注意,在这种情况下排除关系,但显示处理关系的一些不同方法会很好.
mpg cyl disp hp drat wt qsec vs am gear carb ranks
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 2.0
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 1.0
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 2.0
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 …
Run Code Online (Sandbox Code Playgroud) 这可能是我错过的傻事,但我尝试连接整数列表而不是用以下内容求和:
integerArray.Aggregate((accumulator, piece) => accumulator+"," + piece)
Run Code Online (Sandbox Code Playgroud)
编译器抱怨参数错误.是否有一个光滑的方式来做到这一点,而不必经过一个循环?
我正在尝试找到当前正在查看的标签的相关标签.索引中的每个文档都被标记.每个标签由两部分组成 - ID和文本名称:
{
...
meta: {
...
tags: [
{
id: 123,
name: 'Biscuits'
},
{
id: 456,
name: 'Cakes'
},
{
id: 789,
name: 'Breads'
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
要获取相关标记,我只是查询文档并获取其标记的聚合:
{
"query": {
"bool": {
"must": [
{
"match": {
"item.meta.tags.id": "123"
}
},
{
...
}
]
}
},
"aggs": {
"baked_goods": {
"terms": {
"field": "item.meta.tags.id",
"min_doc_count": 2
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这很完美,我得到了我想要的结果.但是,我要求标签ID 和名称都做有用的事情.我已经探索了如何实现这一点,解决方案似乎是:
第一选项和第二选项对我来说是不可用的,所以我一直在使用3,但它没有以预期的方式响应.鉴于以下查询(仍在搜索也标有'Biscuits'的文档):
{
...
"aggs": {
"baked_goods": {
"terms": …
Run Code Online (Sandbox Code Playgroud) 如何为id
以下数据框中的每个唯一选择第一行和最后一行?
tmp <- structure(list(id = c(15L, 15L, 15L, 15L, 21L, 21L, 22L, 22L,
22L, 23L, 23L, 23L, 24L, 24L, 24L, 24L), d = c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), gr = c(2L, 1L,
1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L), mm = c(3.4,
4.9, 4.4, 5.5, 4, 3.8, 4, 4.9, 4.6, 2.7, 4, 3, 3, 2, 4, 2), area = c(1L, …
Run Code Online (Sandbox Code Playgroud) 我需要按组组合文本。我发现了一个名为 的函数STRING_AGG
。
select c.id
, c.bereichsname
, STRING_AGG(j.oberbereich,',') oberBereiches
from stellenangebote_archiv as j
join bereiche as c on j.bereich_id = c.id
group by c.id, c.bereichsname
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
STRING_AGG 聚合结果超出了 8000 字节的限制。使用 LOB 类型以避免结果截断。
这是一个实用的领域驱动设计问题:
从概念上讲,我认为在获得定义之前我会得到Aggregate.
我有一个Employee实体,它已表现为聚合根.在业务中,一些员工可以针对他们记录与工作相关的违规行为:
员工-----*违规
由于并非所有员工都受此限制,我认为违规行为不会成为员工总数的一部分,对吗?
因此,当我想与Employees及其相关的违规行为合作时,某个服务是否有两个独立的Repository交互?
最后,当我添加一个Violation时,是Employee Entity上的那个方法吗?谢谢您的帮助!
收到以下错误:
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'world.country.Code' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Run Code Online (Sandbox Code Playgroud)
运行以下查询时:
select countrylanguage.language, country.code, sum(country.population*countrylanguage.percentage/100)
from countrylanguage
join country on countrylanguage.countrycode = country.code
group by countrylanguage.language
order by sum(country.population*countrylanguage.percentage) desc ;
Run Code Online (Sandbox Code Playgroud)
使用MySQL世界测试数据库(http://dev.mysql.com/doc/index-other.html).不知道为什么会这样.目前正在运行MYSQL 5.7.10.
有任何想法吗???:o
如果我运行查询,例如:
SELECT COUNT(*) as num FROM table WHERE x = 'y'
Run Code Online (Sandbox Code Playgroud)
它是否总是返回结果,即使查询与任何记录都不匹配?或者我是否需要验证并确保返回一行作为结果?