public class SearchText
{
public virtual int Id { get; set; }
public virtual string Text { get; set; }
}
public class SearchTextLog
{
public virtual int Id { get; set; }
public virtual SearchText SearchText { get; set; }
public virtual User User { get; set; }
public virtual int SearchCount { get; set; }
public virtual DateTime LastSearchDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我试图根据SearchTextLog中的计数总和选择前5个SearchText项.目前我只能通过首先执行查询来获取前5个项目,然后在第二个查询中使用结果来解决此问题.我想知道是否有人可以向我展示光线,并教我如何将这两个单独的查询整合到一个单元中.
这是我目前的情况:
var topSearchCriteria = Session.CreateCriteria(typeof (SearchTextLog))
.SetProjection(Projections.ProjectionList()
.Add(Projections.GroupProperty("SearchText.Id"))
.Add(Projections.Alias(Projections.Sum("SearchCount"), "SearchCount")))
.AddOrder(Order.Desc("SearchCount"))
.SetMaxResults(topSearchLimit)
.List<int>(); …Run Code Online (Sandbox Code Playgroud) 我有一个包含datetime列和一些misc其他列的表.datetime列表示发生的事件.它可以包含一个时间(当时发生的事件)或NULL(事件未发生)
我现在想要计算特定间隔(15分钟)内发生的记录数,但不知道该怎么做.
例:
id | time | foreign_key
1 | 2012-01-01 00:00:01 | 2
2 | 2012-01-01 00:02:01 | 4
3 | 2012-01-01 00:16:00 | 1
4 | 2012-01-01 00:17:00 | 9
5 | 2012-01-01 00:31:00 | 6
Run Code Online (Sandbox Code Playgroud)
我现在想要创建一个创建类似于以下结果集的查询:
interval | COUNT(id)
2012-01-01 00:00:00 | 2
2012-01-01 00:15:00 | 2
2012-01-01 00:30:00 | 1
Run Code Online (Sandbox Code Playgroud)
这在SQL中是否可行,或者任何人都可以建议我可以使用哪些其他工具?(例如,将数据导出到电子表格程序不会有问题)
是否有优雅的单线(使用任何R包)来完成以下任务?
tab <- aggregate(. ~ Species, dat=iris, mean)
total <- data.frame(Species='Overall', t(colMeans(iris[,-5])))
rbind(tab, total)
Run Code Online (Sandbox Code Playgroud) (对不起,如果标题不是很有用:我不知道如何更好地定义这个问题)
我的数据格式如下:
在每个组中,我有一个pre值和一个或两个post值.我想将此表转换为以下内容:

我想用以下的方式对数据进行分组:
aggregate(mydata, by = group, FUN = myfunction)
Run Code Online (Sandbox Code Playgroud)
要么
ddply(mydata, .(group), .fun = myfunction)
Run Code Online (Sandbox Code Playgroud)
并在我的函数中处理每个组的元素.但我看不出如何做到这一点,因为我需要同时通过type和value同时向我的功能.有一个更好的方法吗?
更新:快速和脏的样本数据集:
mydata <- data.frame(group = sample(letters[1:5], 10, replace = TRUE),
type = sample(c("pre", "post"), 10, replace = TRUE),
value = rnorm(10))
Run Code Online (Sandbox Code Playgroud) Car.objects.all() # 5 cars in db, every car costs 1000 $
Car.objects.all().aggregate(Sum("price")) # result: 5000
# aggregate only on a subset
Car.objects.all()[3:].aggregate(Sum("price")) # result: 5000!, not 3000
# with filter()[3:] i got the same results!
Run Code Online (Sandbox Code Playgroud)
为什么?切片未在数据库中评估?
我怎样才能用聚合来实现这一点?
我有一个数据框,在一列中有一长串日期,在另一列中有值,如下所示:
set.seed(1234)
df <- data.frame(date= as.Date(c('2010-09-05', '2011-09-06', '2010-09-13',
'2011-09-14', '2010-09-23', '2011-09-24',
'2010-10-05', '2011-10-06', '2010-10-13',
'2011-10-14', '2010-10-23', '2011-10-24')),
value= rnorm(12))
Run Code Online (Sandbox Code Playgroud)
我需要计算每个月每10天的平均值,但无论年份如何,都是这样:
dfNeeded <- data.frame(datePeriod=c('period.Sept0.10', 'period.Sept11.20', 'period.Sept21.30',
'period.Oct0.10', 'period.Oct11.20', 'period.Oct21.31'),
meanValue=c(mean(df$value[c(1,2)]),
mean(df$value[c(3,4)]),
mean(df$value[c(5,6)]),
mean(df$value[c(7,8)]),
mean(df$value[c(9,10)]),
mean(df$value[c(11,12)])))
Run Code Online (Sandbox Code Playgroud)
有这么快的方法吗?
我正在使用airqualityR 中可用的数据集,并尝试计算数据中不包含任何NAs的行数,同时按Month.
数据如下所示:
head(airquality)
# Ozone Solar.R Wind Temp Month Day
# 1 41 190 7.4 67 5 1
# 2 36 118 8.0 72 5 2
# 3 12 149 12.6 74 5 3
# 4 18 313 11.5 62 5 4
# 5 NA NA 14.3 56 5 5
# 6 28 NA 14.9 66 5 6
Run Code Online (Sandbox Code Playgroud)
如您所见,我NA在列Ozone和Solar.R. 我使用的功能complete.cases如下:
x <- airquality[,1] # for …Run Code Online (Sandbox Code Playgroud) 输入:我有这个数据:
library(data.table)
ids <- c(10, 10, 10, 11, 12, 12)
items <- c('soup', 'rice', 'lemon', 'chicken', 'lamb', 'noodles')
orders <- as.data.table(list(id=ids, item=items))
> orders
id item
1: 10 soup
2: 10 rice
3: 10 lemon
4: 11 chicken
5: 12 lamb
6: 12 noodles
Run Code Online (Sandbox Code Playgroud)
目标:需要达到这一点(按 ID 对所有项目进行分组):
id items
1: 10 soup,rice,lemon
2: 11 chicken
3: 12 lamb,noodles
Run Code Online (Sandbox Code Playgroud)
我做了什么:我在 R 3.1.1(最新版本)上使用 data.table - 尝试了以下方法,它应该可以工作:
orders[,list(items=list(item)), by=id]
Run Code Online (Sandbox Code Playgroud)
但是得到以下(不正确的)输出:
id items
1: 10 lamb,noodles,lemon
2: 11 lamb,noodles,lemon
3: 12 …Run Code Online (Sandbox Code Playgroud) 我正在使用Analytic of events,我使用hadoop处理日志并将一些结果存储在Mysql中.由于日志不断出现,因此可伸缩性问题现在无法正常工作.
我们需要显示每年,每月,每周,每天,每小时的统计数据以及过滤功能我们的样本可以为10万用户增长,每个小时每小时使用20个网站
100,000(用户)*20(独特网站)*2(位置)*24 (小时)= 96,000,000(每天最多9600万条记录)
我们的表看起来像
event_src_id,时间,用户,网站,位置,一些统计数据
一些查询示例是
1) select website, sum(stats), count(distinct(user_id)) from table group by website;
2) select website, sum(stats), count(distinct(user_id)) from table where YEAR(Time) = 2009 group by website, MONTH(Time);
3) select website, sum(stats), count(distinct(user_id)) from table group by website where event_src_id=XXXXXXXXXXX;
4) select website, sum(stats), count(distinct(user_id)) from table group by website where time > 1 jan 2014 and time <=31 jan 2014;
5) select website, location, sum(stats), count(distinct(user_id)) from table group by website, location; …Run Code Online (Sandbox Code Playgroud) 我假设这是一件容易的事情,但我无法解决我的问题。
我有一个包含 9 列的数据框,我想为第一列中给出的每个组排序第 4 列 (LumenLenght) 的最高 3 个值。
我希望能够:a)找到为每个 SampleID(第一列)分隔的第 4 列具有最高值的 10 行 b)平均每个 SampleID 的 10 个值

我当前的代码 a) 首先根据 SampleID 和 LumenLength 对值进行排序,b) 将每个 SampleID 的最高、第二高和第三高的 LumenLength 值分开。
sorted.v= arrange(sorted.v, desc(SampleId), LumenLength)
maxlength1 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId), FUN = tail, n = 1)#highest value
maxlength2 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId), FUN = tail, n = 2)#second highest value
maxlength3 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId), FUN = tail, n = 3)#3. highest value
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我还没有真正达到我的目标。我也很确定有更好的方法来做到这一点,但我现在卡住了。