如何在 R 中查找一列值与另一列值之间的总和?
r programmingserver side programmingprogramming更新于 2025/4/9 8:37:17
要查找一列值与另一列中特定值之间的总和,我们可以使用 cumsum 函数和 sum 函数。
例如,如果我们有一个名为 df 的数据框,其中包含两列,即 x 和 y,我们想要查找 x 值的总和,直到 y 等于 2,那么我们可以使用以下命令 −
sum(df$x[cumsum(df$y==2)==0])
示例 1
以下代码片段创建了一个示例数据框 −
x1<-rpois(20,5) x2<-rpois(20,2) df1<-data.frame(x1,x2) df1
输出
创建以下数据框 −
x1 x2 1 9 4 2 1 2 3 5 3 4 5 2 5 4 2 6 14 2 7 11 3 8 2 2 9 6 1 10 6 2 11 1 2 12 3 3 13 3 0 14 6 2 15 6 0 16 9 3 17 5 1 18 6 4 19 5 2 20 2 2
要计算 x1 直到 x2 达到 0 的总和,请将以下代码添加到上述代码片段中 −
x1<-rpois(20,5) x2<-rpois(20,2) df1<-data.frame(x1,x2) sum(df1$x1[cumsum(df1$x2==0)==0])
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
[1] 67
示例 2
以下代码片段创建了一个示例数据框 −
y1<-round(rnorm(20),1) y2<-round(rnorm(20),1) df2<-data.frame(y1,y2) df2
输出
创建以下数据框 −
y1 y2 1 2.4 -0.7 2 0.1 2.7 3 -0.7 0.0 4 1.6 -1.9 5 0.2 -1.0 6 0.2 1.7 7 0.7 0.7 8 -0.1 -0.3 9 -0.2 -0.2 10 -1.3 1.4 11 -2.5 -0.4 12 1.2 0.9 13 0.8 -0.4 14 0.8 -1.3 15 0.6 0.5 16 -0.8 -1.8 17 0.4 -0.4 18 0.4 0.6 19 -1.0 0.2 20 0.3 0.6
要计算 y1 直到 y2 达到 0.5 的总和,请将以下代码添加到上述代码片段中 −
y1<-round(rnorm(20),1) y2<-round(rnorm(20),1) df2<-data.frame(y1,y2) sum(df2$y1[cumsum(df2$y2==0.5)==0])
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
[1] 3.2