使用上面的 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
我有一个这样的数据框:
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