如何找到R数据框中每一行的累积总和?
要找到R数据帧中每一行的累积和,我们需要将数据帧作为data.table对象读取,然后将Reduce函数与累积参数一起使用。
例如,如果我们有一个名为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