如何在R中查詢另一列值之前某列值的總和?
為了找到另一列特定值之前某列值的總和,我們可以使用cumsum函式和sum函式。
例如,如果我們有一個名為df的資料框,其中包含兩列,例如x和y,並且我們想要找到y等於2之前x值的總和,那麼我們可以使用以下命令:
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
為了找到x2達到0之前x1的總和,請將以下程式碼新增到上面的程式碼片段中:
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
為了找到y2達到0.5之前y1的總和,請將以下程式碼新增到上面的程式碼片段中:
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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP