【发布时间】:2016-08-03 14:17:53
【问题描述】:
我正在尝试根据顺序组 ID 处理数据。有J个组,我想为组运行数据处理功能i < j=1..J
最简单的情况是当每一行都是它自己的组并且您计算累积和时。但是我每组有多行,处理比求和更复杂。
这是我的数据格式的一个最小示例:
row | group | value
----|-------|------
1 | 1 | 2065
2 | 1 | 2075
3 | 2 | 18008
4 | 2 | 17655
: | : | :
N-1 | J-1 | 2345
N | J | 5432
我想到的一个解决方案是复制我的数据,将其堆叠并重新分配每个数据中的组,以便将组 i<j 分配给 j。这将导致一个非常长的数据框,如下所示:
row | group | value
----|-------|------
1 | 1 | 2065
2 | 1 | 2075
3 | 2 | 2065
4 | 2 | 2075
5 | 2 | 18008
6 | 2 | 17655
: | : | :
但是这似乎很乏味且效率低下,因为我的数据将被复制很多次。
有没有人知道一种更有效的方式来处理累积组中的数据?
【问题讨论】:
-
您的问题不清楚,尤其是因为您以“so that group $i”之类的句子结尾
-
谢谢弗兰克,看来数学不再渲染了……让我来解决这个问题
-
这可能是有趣的吗? stackoverflow.com/questions/32529854/…
-
哦,是的,tex math 从未在此站点上可用,即使它位于 stackexchange 网络的其他地方。解决这个问题有点痛苦,所以人们通常只是在代码块中编写数学。
-
这可以用SQL在一行中完成;
library(sqldf); sqldf("select a.[group], b.value from (select distinct [group] from DF) a join DF b on a.[group] >= b.[group]")