aggregate各州的文件:
'aggregate.formula'是'aggregate.data.frame'的标准公式接口.
我是R的新手,我不明白这意味着什么.请解释!
谢谢!
乌里
我有两个整数向量.我想确定在由第一个载体调节的第二个载体中呈现的连续整数序列的间隔(该载体可以看作是一个因子,通过该因子,第二个载体可以分成几个组).
在这里,我为我的问题提出了一个假人.
在第二个向量的一组(由第一向量定义)中的数据,整数单调增加.
my.data <- data.frame(
V1=c(rep(1, 10), rep(2, 9), rep(3,11)),
V2=c(seq(2,5), seq(7,11), 13, seq(4, 9), seq(11,13), seq(1, 6), seq(101, 105))
)
Run Code Online (Sandbox Code Playgroud)
我想要的是:
预期成绩:
1, 2, 5 \n
1, 7, 11 \n
1, 13, 13 \n
2, 4, 9 \n
2, 11, 13 \n
3, 1, 6 \n
3, 101, 105 \n
Run Code Online (Sandbox Code Playgroud) 我在创建带有汇总数据的堆积条形图时遇到了麻烦.当处理来自其他人的报告的聚合表时,我通常使用Excel,但我想开始在R中做我的所有图表,可能使用格子或ggplot.在Excel中,执行以下聚合数据的堆叠条形图需要几次单击(插入,列图表,堆积列),您将得到类似的结果.
.
除了想在这张图表中RI也希望用ggplot的刻面,即把两个堆叠barcharts并排ggplot比较两个组(A和B).I've与其他图表发挥各地,这似乎是最好的选择.这是数据.Excel图表仅显示组A(数字是百分比).
D<-as.data.frame(structure(list(Group = c("A", "A", "A", "A", "A",
"A", "B", "B", "B", "B", "B", "B"
), Education = c("NVQ Level 4 and above", "NVQ Level3", "NVQ Level 2",
"Below NVQ Level 2", "Other qualification", "No qualification",
"NVQ Level 4 and above", "NVQ Level3", "NVQ Level 2", "Below NVQ Level 2",
"Other qualification", "No qualification"), Full.Time = c(47,
27, 23, 17, 18, 9, 36, 26, 22, 22, 27, 12), PT.16.hours = c(20,
24, 22, 18, 18, 12, 22, 21, …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据集:
id1 id2 size
1 5400 5505 7
2 5033 5458 1
3 5452 2873 24
4 5452 5213 2
5 5452 4242 26
6 4823 4823 4
7 5505 5400 11
Run Code Online (Sandbox Code Playgroud)
其中id1和id2是在一个图形独特节点,并且size是分配给一个值涉及连接它们的边缘从 id1 给 id2.这个数据集相当大(略多于200万行).我想这样做是和大小列,按分组无序节点对的id1和id2.例如,在第一行中,我们有id1=5400和id2=5505.数据框中存在另一行,其中id1=5505和id2=5400.在分组数据中,这两行的大小列的总和将添加到单个行中.换句话说,我想总结一下我在(无序)(id1,id2)集合上的数据.我已经找到了一种方法来使用apply自定义函数来检查完整数据集中的反向列对,但这种方法非常缓慢.有没有人知道以另一种方式做到这一点的方法,可能与plyr基础包中的某些内容相比更高效?
为什么aggregate()在这里不起作用?
> aggregate(cbind(var1 = 1:10, var2 = 101:110),
by=list(range=cut(1:10, breaks=c(2,4,8,10))),
FUN = function(x)
{
c(obs=length(x[, "var2"]), avg=mean(x[, "var2"]), sd=dev(x[, "var2"]))
})
Error in x[, "var2"] (from #1) : incorrect number of dimensions
> cbind(var1 = 1:10, var2 = 101:110)[, "var2"]
[1] 101 102 103 104 105 106 107 108 109 110
Run Code Online (Sandbox Code Playgroud)
UPDATE
运行正确的版本后返回的aggregate()值:
> r = aggregate(data.frame(var1 = 1:10, var2 = 101:110), by=list(range=cut(1:10, breaks=c(2,4,8,10))), FUN = function(x) { c(obs=length(x), avg=mean(x), sd=sd(x)) })
> class(r)
[1] "data.frame"
> dim(r)
[1] 3 …Run Code Online (Sandbox Code Playgroud) 我正在申请一项需要一些复式记账的申请.目前有两个端点
/account
/transaction
Run Code Online (Sandbox Code Playgroud)
在/account处理账户的一般数据时,/transaction处理存款/取款的交易.账户余额根据相关交易计算.我将它们分开以便在将值从一个账户转移到另一个账户时保持一致性.
我的问题是如何在/account端点上表示帐户的余额,因为它总是在请求时计算.响应是否应将余额作为只读字段包含?这有点像糟糕的API设计,因为所有字段,但这一个是可写/可更新的.
我想到的另一种方法是将端点扩展到
/account/{id}/balance
Run Code Online (Sandbox Code Playgroud)
仅返回相关帐户的余额.但是,除了帐户的剩余数据之外,这总是需要第二次调用以获得余额.也许答案可以概括如何表示聚合值.
我正在尝试一种算法来解决我遇到的这个问题.这不是硬件问题,而是我正在研究的一个副项目.
有一个表A大约有10 ^ 5行的顺序,并且每天以10 ^ 2的顺序添加新的.
表B具有10 ^ 6行的顺序,并且每天以10 ^ 3添加新的.从A到B有一对多关系(A中某些行有很多B行).
我想知道如何为这种数据进行连续聚合.我希望每隔约10分钟运行一次这样的工作并执行此操作:对于A中的每一行,查找在最后一天,一周和一个月中创建的B中与其相关的每一行(然后按计数排序)并保存他们在不同的数据库或缓存他们.
如果这令人困惑,这里有一个实际的例子:Say表A有亚马逊产品,表B有产品评论.我们希望显示最近4小时,每天,每周等评价最高的产品的分类列表.新产品和评论会快速添加,我们希望上述列表为最新版本尽可能.
我当前的实现只是一个for循环(伪代码):
result = []
for product in db_products:
reviews = db_reviews(product_id=product.id, create>=some_time)
reviews_count = len(reviews)
result[product]['reviews'] = reviews
result[product]['reviews_count'] = reviews_count
sort(result, by=reviews_count)
return result
Run Code Online (Sandbox Code Playgroud)
我每小时都这样做,并将结果保存在json文件中以供服务.问题是这不能很好地扩展,并且需要很长时间来计算.
那么,我在哪里可以解决这个问题呢?
更新:
谢谢您的回答.但我最终学习并使用Apache Storm.
我有一个数据帧merged_df_energy:
+------------------------+------------------------+------------------------+--------------+
| ACT_TIME_AERATEUR_1_F1 | ACT_TIME_AERATEUR_1_F3 | ACT_TIME_AERATEUR_1_F5 | class_energy |
+------------------------+------------------------+------------------------+--------------+
| 63.333333 | 63.333333 | 63.333333 | low |
| 0 | 0 | 0 | high |
| 45.67 | 0 | 55.94 | high |
| 0 | 0 | 23.99 | low |
| 0 | 20 | 23.99 | medium |
+------------------------+------------------------+------------------------+--------------+
Run Code Online (Sandbox Code Playgroud)
我想为每个ACT_TIME_AERATEUR_1_Fx(ACT_TIME_AERATEUR_1_F1,ACT_TIME_AERATEUR_1_F3和ACT_TIME_AERATEUR_1_F5)创建一个包含这些列的数据框:class_energy和sum_time
例如,对应于的数据框ACT_TIME_AERATEUR_1_F1:
+-----------------+-----------+
| class_energy | sum_time …Run Code Online (Sandbox Code Playgroud) 使用Postgres-Db作为json文档的源代码,我需要将两列从表转换为JSON对象.
所以我在颜色表中有"color_id","language"和"name"列:
color_id | language | name
1 | "de" | "blau"
1 | "en" | "blue"
1 | "fr" | "bleu"
我想生成一个JSON对象,如:
{
"de": "blau",
"fr": "bleu",
"en": "blue"
}
我开始了
SELECT
array_to_json(array_agg((language::text, name::text))),
color_id
FROM colors
GROUP BY color_id;
不幸的是产生了
array to json | color_id
"[{"f1":"de","f2":"blau"} |
, {"f1":"en","f2":"blue"} | 1
, {"f1":"fr","f2":"bleu"}]" |
我认为这很简单 - 或多或少 - 但发现自己处于误导性结果和语法错误的死胡同.
亲切的问候,多米尼克
我正在尝试创建一个数据框,其中存在一个列,其中包含表示正数和负数运行长度的值,如下所示:
Time V Length
0.5 -2 1.5
1.0 -1 1.5
1.5 0 0.0
2.0 2 1.0
2.5 0 0.0
3.0 1 1.75
3.5 2 1.75
4.0 1 1.75
4.5 -1 0.75
5.0 -3 0.75
Run Code Online (Sandbox Code Playgroud)
该Length列汇总了值为正或负的时间长度.0因为它们是拐点,所以给出零.如果符号变化没有零分离,则在拐点的任一侧平均值.
我试图估计这些价值观积极或消极的时间.我试过这个for循环有不同程度的成功,但我想避免循环,因为我正在处理非常大的数据集.
我花了一些时间看sign和diff,因为他们在使用约符号改变这个问题.我也看过这个使用transform和aggregate连续重复值的问题.我觉得我可以结合使用sign和/或diff,但我不确定如何追溯性地将这些总和分配到创建它们的范围或如何处理我在整个变形中取平均值的点.
任何建议,将不胜感激.以下是示例数据集:
dat <- data.frame(Time = seq(0.5, 5, 0.5), V = c(-2, -1, 0, 2, 0, 1, 2, 1, -1, -3))
Run Code Online (Sandbox Code Playgroud)