如何在 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

相关文章