如何在 R 資料框中查詢每一行的乘積?


為了找到 R 資料框中每一行的乘積,我們可以使用 matrixStats 包中的 rowProds 函式,但是我們需要將資料框讀取為矩陣。

例如,如果我們有一個名為 df 的資料框,那麼我們可以使用下面給出的命令來查詢 df 中每一行的乘積:

rowProds(as.matrix(df))

示例 1

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

x1<-rpois(20,5)
x2<-rpois(20,2)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1

建立了以下資料框:

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

要載入 matrixStats 包並查詢上面建立的資料框 df1 中資料的每一行的乘積,請將以下程式碼新增到上面的程式碼片段中:

x1<-rpois(20,5)
x2<-rpois(20,2)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
library(matrixStats)
df1$Row_Product_df1<-rowProds(as.matrix(df1))
df1

輸出

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

x1  x2  x3  Row_Product_df1
1   3  1   4               12
2   7  2   0                0
3   2  4   1                8
4   9  2   0                0
5   4  2   2               16
6   7  3   1               21
7   5  2   2               20
8   1  2   0                0
9   4  1   2                8
10  4  1   0                0
11  8  2   0                0
12  6  2   2               24
13  6  0   2                0
14  6  3   1               18
15  4  2   0                0
16 10  4   1               40
17  8  0   0                0
18  5  4   0                0
19  6  3   0                0
20  2  2   0                0

示例 2

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

y1<-round(rnorm(20),0)
y2<-round(rnorm(20),0)
y3<-round(rnorm(20),0)
y4<-round(rnorm(20),0)
df2<-data.frame(y1,y2,y3,y4)
df2

建立了以下資料框:

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

要查詢上面建立的資料框 df2 中資料的每一行的乘積,請將以下程式碼新增到上面的程式碼片段中:

y1<-round(rnorm(20),0)
y2<-round(rnorm(20),0)
y3<-round(rnorm(20),0)
y4<-round(rnorm(20),0)
df2<-data.frame(y1,y2,y3,y4)
df2$Row_Product_df2<-rowProds(as.matrix(df2))
df2

輸出

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

y1  y2  y3  y4 Row_Product_df2
1   0  -1   0   -2              0
2   0  -1  -1    0              0
3   1   0   1    0              0
4   0   0   0    0              0
5   1  -1   1    2             -2
6   0   0  -1   -1              0
7  -1   0  -1    0              0
8   1   0  -1    0              0
9  -2   0  -2    1              0
10  0   0   0    1              0
11 -2   1  -2    0              0
12  0   1   0   -1              0
13  3   0   0    1              0
14  1  -1   1   -2              2
15 -1   1   1   -1              1
16  1   1  -1    0              0
17  0   0  -1    0              0
18  2   0   2   -1              0
19  3   2   0   -1              0
20  1   0  -1   -1              0

更新於:2021年10月27日

212 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告