簡體   English   中英

R基於其他列的累積總和

[英]R cumulative sum based upon other columns

我有一個data.frame如下。 數據按txt列,然后按val列排序。 summ列是val列中值的總和,如果當前行和前一行在txt列中具有相同的值,則前一行的summ列值...我如何在R中做到這一點?

txt=c(rep("a",4),rep("b",5),rep("c",3))
val=c(1,2,3,4,1,2,3,4,5,1,2,3)
summ=c(1,3,6,10,1,3,6,10,15,1,3,6)
dd=data.frame(txt,val,summ)
> dd
   txt val summ
1    a   1    1
2    a   2    3
3    a   3    6
4    a   4   10
5    b   1    1
6    b   2    3
7    b   3    6
8    b   4   10
9    b   5   15
10   c   1    1
11   c   2    3
12   c   3    6

如果用“最早的”(英語中更恰當地寫為“最早的”)來表示最接近的值 (即預期輸出所隱含的含義),那么您所說的是累計和。 您可以申請cumsum()分別對各組的txtave()

dd <- data.frame(txt=c(rep("a",4),rep("b",5),rep("c",3)), val=c(1,2,3,4,1,2,3,4,5,1,2,3) );
dd$summ <- ave(dd$val,dd$txt,FUN=cumsum);
dd;
##    txt val summ
## 1    a   1    1
## 2    a   2    3
## 3    a   3    6
## 4    a   4   10
## 5    b   1    1
## 6    b   2    3
## 7    b   3    6
## 8    b   4   10
## 9    b   5   15
## 10   c   1    1
## 11   c   2    3
## 12   c   3    6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM