如何在R中的另一列中找到一列值的总和?

要查找一列值的总和直到另一列中的特定值,我们可以使用 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

以上是 如何在R中的另一列中找到一列值的总和? 的全部内容, 来源链接: utcz.com/z/331669.html

回到顶部