R中的特定范围之和

时间:2019-01-26 23:28:52

标签: r sum

我想用B列作为条件求和A列。

A B C

1
2
3
4是10

5
6
7是18

8
9
10是27

C列中的

10是sum(1,2,3,4) 18是sum(5,6,7) 27是sum(10,9,8)

2 个答案:

答案 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