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使用累积方法按组汇总

来自分类Dev

dplyr中的“转发”累积总和

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在dplyr,R中不带组的样本

来自分类Dev

在dplyr,R中不带组的样本

来自分类Dev

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

来自分类Dev

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

来自分类Dev

R中的累积曲线

来自分类Dev

R中的累积曲线

来自分类Dev

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

来自分类Dev

R,dplyr:n_distinct的累积版本

来自分类Dev

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

来自分类Dev

dplyr中的重叠组

来自分类Dev

dplyr中的滑动组

来自分类Dev

dplyr中的滑动组

来自分类Dev

R中的“累积差异”功能

来自分类Dev

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

来自分类Dev

获取每个组dplyr的相对丰度

来自分类Dev

使用dplyr按组计算每个块?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在R中为组的每个成员分配值的快速方法