dplyr中每个组的r累积

cantdutchthis

我开始很喜欢,dplyr但是我陷在一个用例上。我希望能够cumsum使用该包在数据帧中按组应用,但似乎无法正确完成。

对于演示数据帧,我生成了以下数据:

set.seed(123)

len = 10 
dates = as.Date('2014-01-01') + 1:len
grp_a = data.frame(dates=dates, group='A', sales=rnorm(len))
grp_b = data.frame(dates=dates, group='B', sales=rnorm(len))
grp_c = data.frame(dates=dates, group='C', sales=rnorm(len))
df = rbind(grp_a, grp_b, grp_c)

这将创建一个数据框,如下所示:

        dates group       sales
1  2014-01-02     A -0.56047565
2  2014-01-03     A -0.23017749
3  2014-01-04     A  1.55870831
4  2014-01-05     A  0.07050839
5  2014-01-06     A  0.12928774
6  2014-01-02     B  1.71506499
7  2014-01-03     B  0.46091621
8  2014-01-04     B -1.26506123
9  2014-01-05     B -0.68685285
10 2014-01-06     B -0.44566197
11 2014-01-02     C  1.22408180
12 2014-01-03     C  0.35981383
13 2014-01-04     C  0.40077145
14 2014-01-05     C  0.11068272
15 2014-01-06     C -0.55584113

然后,我继续创建一个用于绘制的数据框,但是要使用一个for循环,我想用更干净的东西代替它。

pdf = data.frame(dates=as.Date(as.character()), group=as.character(), sales=as.numeric())
for(grp in unique(df$group)){
  subs = filter(df, group == grp) %>% arrange(dates)
  pdf = rbind(pdf, data.frame(dates=subs$dates, group=grp, sales=cumsum(subs$sales)))
}

我用它pdf来创建一个情节。

p = ggplot() 
p = p + geom_line(data=pdf, aes(dates, sales, colour=group))
p + ggtitle("sales per group")

在此处输入图片说明

有没有更好的方法(使用dplyr方法的方法)来创建此数据框?我已经看过这种summarize方法,但是这似乎是从N个项目-> 1个项目中汇总了一个组。此用例目前似乎打破了我的dplyr流程。有什么建议可以更好地解决这个问题吗?

cantdutchthis

啊。在摆弄之后,我似乎找到了它。

pdf = df %>% group_by(group) %>% arrange(dates) %>% mutate(cs = cumsum(sales))

有问题的forloop输出:

> pdf = data.frame(dates=as.Date(as.character()), group=as.character(), sales=as.numeric())
> for(grp in unique(df$group)){
+   subs = filter(df, group == grp) %>% arrange(dates)
+   pdf = rbind(pdf, data.frame(dates=subs$dates, group=grp, sales=subs$sales, cs=cumsum(subs$sales)))
+ }
> pdf
        dates group       sales         cs
1  2014-01-02     A -0.56047565 -0.5604756
2  2014-01-03     A -0.23017749 -0.7906531
3  2014-01-04     A  1.55870831  0.7680552
4  2014-01-05     A  0.07050839  0.8385636
5  2014-01-06     A  0.12928774  0.9678513
6  2014-01-02     B  1.71506499  1.7150650
7  2014-01-03     B  0.46091621  2.1759812
8  2014-01-04     B -1.26506123  0.9109200
9  2014-01-05     B -0.68685285  0.2240671
10 2014-01-06     B -0.44566197 -0.2215949
11 2014-01-02     C  1.22408180  1.2240818
12 2014-01-03     C  0.35981383  1.5838956
13 2014-01-04     C  0.40077145  1.9846671
14 2014-01-05     C  0.11068272  2.0953498
15 2014-01-06     C -0.55584113  1.5395087

使用以下代码行输出:

> pdf = df %>% group_by(group) %>% mutate(cs = cumsum(sales))
> pdf
Source: local data frame [15 x 4]
Groups: group

        dates group       sales         cs
1  2014-01-02     A -0.56047565 -0.5604756
2  2014-01-03     A -0.23017749 -0.7906531
3  2014-01-04     A  1.55870831  0.7680552
4  2014-01-05     A  0.07050839  0.8385636
5  2014-01-06     A  0.12928774  0.9678513
6  2014-01-02     B  1.71506499  1.7150650
7  2014-01-03     B  0.46091621  2.1759812
8  2014-01-04     B -1.26506123  0.9109200
9  2014-01-05     B -0.68685285  0.2240671
10 2014-01-06     B -0.44566197 -0.2215949
11 2014-01-02     C  1.22408180  1.2240818
12 2014-01-03     C  0.35981383  1.5838956
13 2014-01-04     C  0.40077145  1.9846671
14 2014-01-05     C  0.11068272  2.0953498
15 2014-01-06     C -0.55584113  1.5395087

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用R中的dplyr建立组之间的差异

来自分类Dev

使用dplyr在R中按组计算统计检验

来自分类Dev

R中每个组的加权平均聚合数据

来自分类Dev

将组除以R中每个组中的样本数

来自分类Dev

R中的累积曲线

来自分类Dev

dplyr中的重叠组

来自分类Dev

R,dplyr:n_distinct的累积版本

来自分类Dev

相对于每个组中的值的比例(通过dplyr)

来自分类Dev

R,dplyr:如果每个组中只有一个唯一的非NA元素,则按组折叠字符变量元素

来自分类Dev

R中的“累积差异”功能

来自分类Dev

在R和dplyr中按组落后/领先

来自分类Dev

dplyr中的滑动组

来自分类Dev

使用R和dplyr执行累积组操作

来自分类Dev

在dplyr,R中不带组的样本

来自分类Dev

dplyr中的“转发”累积总和

来自分类Dev

R中按组累积的总和,并且当组中的总和大于最大值时重新开始

来自分类Dev

使用dplyr在数据框中每个组的开头添加一行

来自分类Dev

熊猫组按每个连续组的累积总和

来自分类Dev

获取每个组dplyr的相对丰度

来自分类Dev

dplyr使用累积方法按组汇总

来自分类Dev

使用dplyr在R中按组计算统计检验

来自分类Dev

将R中每个样本的每个组中的数字相加

来自分类Dev

dplyr样式计数(如果按r中的组)

来自分类Dev

R中的累积曲线

来自分类Dev

使用R中的dplyr建立组之间的差异

来自分类Dev

使用dplyr按组计算每个块?

来自分类Dev

dplyr中的滑动组

来自分类Dev

在dplyr,R中不带组的样本

来自分类Dev

在 R 中运行(累积)产品?