我想用B列作为条件求和A列。
A B C
1
2
3
4是10
5
6
7是18
8
9
10是27
10是sum(1,2,3,4) 18是sum(5,6,7) 27是sum(10,9,8)
答案 0 :(得分:1)
一个简单的ave
应用程序,其组由cumsum
技巧计算出的变量定义即可。
ave(df1$A, rev(cumsum(rev(df1$B))), FUN = cumsum)
#[1] 1 3 6 10 5 11 18 8 17 27
数据。
df1 <- read.table(text = "
A B C
1 FALSE 1
2 FALSE 3
3 FALSE 6
4 TRUE 10
5 FALSE 5
6 FALSE 11
7 TRUE 18
8 FALSE 8
9 FALSE 17
10 TRUE 27
", header = TRUE)
答案 1 :(得分:1)
函数ave
相同,但是获取组函数的想法不同。
ave(df1$A,cumsum(c(F,diff(df1$B)==-1)),FUN=cumsum)
[1] 1 3 6 10 5 11 18 8 17 27