如何在R数据框中查找每一行的累积和?


要在R数据框中查找每一行的累积和,我们需要将数据框读取为data.table对象,然后使用Reduce函数及其accumulate参数。

例如,如果我们有一个名为df的数据框,并且我们想查找df中每一行的累积和,那么我们可以使用以下命令:

setDT(df)[,names(df):=Reduce("+",df,accumulate=TRUE)]

示例1

以下代码片段创建一个示例数据框:

x1<-sample(1:50,20)
x2<-sample(1:50,20)
x3<-sample(1:50,20)
df1<-data.frame(x1,x2,x3)
df1

创建了以下数据框

  x1  x2 x3
 1 6  19 3
 2 28 46 5
 3 17 3  16
 4 16 44 25
 5 50 26 14
 6 40 16 11
 7 21 8  48
 8 19 9  27
 9 37 43 1
10 34 33 15
11 4  17 50
12 48 25 44
13 31 18 12
14 7  13 9
15 12 6  8
16 22 2  4
17 23 23 41
18 11 37 19
19 49 7  13
20 3  4  49

要加载data.table包并在上述创建的数据框df1上查找每一行的累积和,请将以下代码添加到上述代码片段中:

x1<-sample(1:50,20)
x2<-sample(1:50,20)
x3<-sample(1:50,20)
df1<-data.frame(x1,x2,x3)
library(data.table)
setDT(df1)[,names(df1):=Reduce("+",df1,accumulate=TRUE)]
df1

输出

如果您将上述所有代码片段作为单个程序执行,它将生成以下输出:

   x1  x2 x3
 1: 6  25 28
 2: 28 74 79
 3: 17 20 36
 4: 16 60 85
 5: 50 76 90
 6: 40 56 67
 7: 21 29 77
 8: 19 28 55
 9: 37 80 81
10: 34 67 82
11: 4  21 71
12: 48 73 117
13: 31 49 61
14: 7  20 29
15: 12 18 26
16: 22 24 28
17: 23 46 87
18: 11 48 67
19: 49 56 69
20: 3  7  56

示例2

以下代码片段创建一个示例数据框:

y1<-round(rnorm(20),0)
y2<-round(rnorm(20),0)
y3<-round(rnorm(20),0)
df2<-data.frame(y1,y2,y3)
df2

创建了以下数据框

  y1  y2 y3
 1  0  1  1
 2 -1 -1  1
 3  1 -1 -1
 4  0  0  0
 5 -1  0  0
 6  0 -2  0
 7 -1  0  0
 8  1  0 -1
 9  0  0  2
10  1  0  0
11 -1  0 -1
12 -1  0 -1
13  1  0  1
14  0 -2  0
15 -1  0  0
16 -1  1 -1
17 -1 -1 -1
18  0  0 -1
19  0 -1  1
20  0 -1 -1

要在上述创建的数据框df2上查找每一行的累积和,请将以下代码添加到上述代码片段中:

y1<-round(rnorm(20),0)
y2<-round(rnorm(20),0)
y3<-round(rnorm(20),0)
df2<-data.frame(y1,y2,y3)
setDT(df2)[,names(df2):=Reduce("+",df2,accumulate=TRUE)]
df2

输出

如果您将上述所有代码片段作为单个程序执行,它将生成以下输出:

    y1 y2 y3
 1:  0  1  2
 2: -1 -2 -1
 3:  1  0 -1
 4:  0  0  0
 5: -1 -1 -1
 6:  0 -2 -2
 7: -1 -1 -1
 8:  1  1  0
 9:  0  0  2
10:  1  1  1
11: -1 -1 -2
12: -1 -1 -2
13:  1  1  2
14:  0 -2 -2
15: -1 -1 -1
16: -1  0 -1
17: -1 -2 -3
18:  0  0 -1
19:  0 -1  0
20:  0 -1 -2

更新于:2021年11月9日

889 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告