使用上面的 cumsums Sales 过滤行...(dplyr)

Filter rows with cumsums Sales above... (dplyr)

我有一个这样的数据框:

set.seed(1234)
Name <- c(rep("A", 4), rep("B", 4), rep("C", 4), rep("D", 4))
Month <- rep(c("M1","M2","M3","M4"), 4)
Sales <- sample(1000:10000, 16)
df <- data.frame(Name, Month, Sales)

我需要 select 行,其中所有月份销售额的总和大于 23000。结果应该如下所示:

Name Month Sales
C    M1  6990
C    M2  5624
C    M3  7236
C    M4  5899
D    M1  3541
D    M2  9299
D    M3  3627
D    M4  8523

cumsum 是我猜的关键,但我无法获得过滤器的正确 dplyr 公式。

您可以尝试以下方法:

df %>% group_by(Name) %>% filter(sum(Sales) > 23000)
#Source: local data frame [8 x 3]
#Groups: Name
#
#  Name Month Sales
#1    C    M1  6990
#2    C    M2  5624
#3    C    M3  7236
#4    C    M4  5899
#5    D    M1  3541
#6    D    M2  9299
#7    D    M3  3627
#8    D    M4  8523

这是一个基本的 R 解决方案。

 ind <- cumsum(df$Sales) > 23000
 df[ind, ]
   Name Month Sales
5     B    M1  8745
6     B    M2  6760
7     B    M3  1085
8     B    M4  3091
9     C    M1  6990
10    C    M2  5624
11    C    M3  7236
12    C    M4  5899
13    D    M1  3541
14    D    M2  9299
15    D    M3  3627
16    D    M4  8523