基於 R 中另一個數值列查詢列值的總和。


為了在 R 中基於另一個數值列查詢列值的總和,我們可以使用 with 函式並透過使用單個方括號對列進行子集化來定義總和。

例如,如果我們有一個名為 df 的資料框,其中包含兩列,例如 X 和 Y,那麼我們可以使用以下命令查詢當 Y 大於 10 時 X 中值的總和:

(df,sum(X[Y10]))

示例 1

以下程式碼片段建立了一個示例資料框:

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 值的總和,請將以下程式碼新增到上述程式碼片段中:

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

輸出

如果您將上面給出的所有程式碼片段作為單個程式執行,它將生成以下輸出:

[1] 23

示例 2

以下程式碼片段建立了一個示例資料框:

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

以下程式碼片段建立了一個示例資料框:

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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告