基于 R 中另一个数值列查找列值的总和。


为了在 R 中基于另一个数值列查找列值的总和,我们可以使用 with 函数并通过使用单个方括号对列进行子集化来定义总和。

例如,如果我们有一个名为 df 的数据框,其中包含两列,例如 X 和 Y,那么我们可以使用以下命令查找当 Y 大于 10 时 X 中值的总和:

(df,sum(X[Y10]))

示例 1

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

Open Compiler
x1<-rpois(20,2) y1<-rpois(20,2) df1<-data.frame(x1,y1) df1

创建了以下数据框

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

为了在上面创建的数据框中查找当 x1 在 1 到 4 之间时的 y1 值的总和,请将以下代码添加到上述代码片段中:

Open Compiler
x1<-rpois(20,2) y1<-rpois(20,2) df1<-data.frame(x1,y1) with(df1,sum(y1[x1>1 & x1<4]))

输出

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

[1] 23

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例 2

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

Open Compiler
x2<-rnorm(20) y2<-rnorm(20) df2<-data.frame(x2,y2) df2

创建了以下数据框

          x2        y2
1   1.14755939  0.2739985
2   0.33167239 -0.2753514
3  -0.01889732  2.0004839
4  -0.21294107 -1.2277250
5  -1.01230915 -0.4567277
6   0.30736328  0.8563572
7   0.59352845  0.7922568
8  -1.52657337  0.6147363
9   1.43228181 -0.7891716
10  0.15651466 -1.0415412
11  0.01792464 -0.3184454
12 -0.39428864  1.8005928
13 -0.48033841 -1.2787737
14 -0.51845529  0.2815327
15  0.33342239 -0.1313864
16  0.80461529 -0.2456082
17  0.30222411 -1.0134336
18 -0.83910609 -0.8805410
19 -0.06040907 1.4582650
20  0.12855851 -0.3424985

为了在上面创建的数据框中查找当 x2 在 1 到 1.2 之间时的 y2 值的总和,请将以下代码添加到上述代码片段中:

x2<-rnorm(20) y2<-rnorm(20) df2<-data.frame(x2,y2) with(df2,sum(y2[x>21 & x2<1.2]))

输出

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

[1] 0.2739985

示例 3

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

Open Compiler
x3<-sample(0:9,20,replace=TRUE) y3<-sample(0:9,20,replace=TRUE) df3<-data.frame(x3,y3) df3

创建了以下数据框

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

为了在上面创建的数据框中查找当 x3 在 8 到 10 之间时的 y3 值的总和,请将以下代码添加到上述代码片段中:

x3<-sample(0:9,20,replace=TRUE) y3<-sample(0:9,20,replace=TRUE) df3<-data.frame(x3,y3) with(df3,sum(y3[x>38 & x3<10]))

输出

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

[1] 20

更新于: 2021年11月2日

378 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告