在我的项目中,我有大量关于巴士公司的信息。我按日期分隔了一个子集,因此我可以从条形图中看到最需要的总线(在“Linha”列中)。
- > E.g。子集:
data.date [[1]]相当于日期为“2013-03-10”的行子集。
为了实现这一目标,我尝试将所有不同的“Linhas”(公交线路)中的所有值在“Catraca”(检票口)中的所有值加起来。而且,我正在努力奋斗。
这是我使用的逻辑
public class Job {
public User appliedUsers;
private String title;
private String salary;
...
输出是一些逻辑向量。不是理想的。
这些图片可能有助于您了解情况
linha.sum <- with(data.date[[1]], data.date[[1]] == linha.unique, sum(data.date[[1]]$Catraca))
我想要求和的值是不同“Linha”的“Catraca”
数据样本:
View(data.date[[1]])
答案 0 :(得分:2)
由于data.dates
似乎是data.frames列表(可能由split()
创建),因此可以使用lapply
获取每个数据集中的列的总和。< / p>
以下是一些可重现的数据:
data.dates <- list(data.frame(
Linha = c(3,3,1201,1201),
Catraca = c(0,37,2,22)
))
dplyr
library(dplyr)
lapply(data.dates, function(x) {
x %>% group_by(Linha) %>% summarize(catSum = sum(Catraca))
})
# [[1]]
# # A tibble: 2 x 2
# Linha catSum
# <dbl> <dbl>
# 1 3 37
# 2 1201 24
然后,这将为列表中的每个data.frame添加一列,其中包含每个组的总和(按日期和linha)
R
从@Sagars评论中,您还可以使用aggregate
中的lapply
:
lapply(data.dates, function(x) {
aggregate(x$Catraca, by = list(Linha = x$Linha), FUN = sum)
})
# [[1]]
# Linha x
# 1 3 37
# 2 1201 24
事实上,microbenchmark()
显示,在这种情况下,基本解决方案(通常)更快。但是,这仅使用OP中给出的小子集进行测试。
# Unit: microseconds
# expr min lq mean median uq max neval cld
# dplyr 1803.553 1878.499 1994.4945 1918.8880 2016.8730 6495.747 100 b
# base 481.535 513.818 543.4041 538.1365 560.4635 803.222 100 a
答案 1 :(得分:2)
您的查询根据不同的“Linha”要求“Catraca”的总和。
onReceive
将提供。