如何在 R 資料框中排除一列後找到行和?


假設我們在 R 資料框中有一個數值列,由於某些特性(例如與其餘資料的相似性或區別),我們不想將其包含在我們的分析中,那麼我們可能希望從分析中排除該列。一種這樣的情況是在排除一列後查詢行和。為此,我們可以使用以下步驟:

  • 首先,建立一個數據框。
  • 藉助 dplyr 包的 mutate 函式和 base R 中的 setdiff 函式查詢行和

建立資料框

讓我們建立一個如下所示的資料框:

 線上演示

x1<-round(rnorm(20),2)
x2<-round(rnorm(20),2)
x3<-round(rnorm(20),2)
df<-data.frame(x1,x2,x3)
df

執行上述指令碼後,會生成以下輸出(由於隨機化,此輸出會在您的系統上有所不同):

   x1    x2    x3
1 0.67  0.63 -0.12
2 -0.41 0.36 -1.14
3 0.73  0.85  0.29
4 -3.14 0.16  0.65
5 -0.07 0.76  0.07
6 -0.05 -0.26 -2.03
7 -1.61 0.36  0.88
8 -1.48 -0.90 1.10
9 - 2.27 -2.92 -0.06
10 -0.78 -1.89 -0.10
11 -0.06 -1.30 -1.43
12 -0.15 -0.57 0.40
13 0.31 -0.46 -0.46
14 -0.40 -0.16 -1.06
15 -0.07 -1.62 -0.23
16 0.29  0.00  0.29
17 -0.61 0.53 1.67
18 0.86 -0.54 -1.40
19 0.85 0.17 -0.37
20 0.61 -1.46 0.27

查詢行和

使用 dplyr 包的 mutate 函式和 setdiff 函式排除 x3 列查詢行和:

x1<-round(rnorm(20),2)
x2<-round(rnorm(20),2)
x3<-round(rnorm(20),2)
df<-data.frame(x1,x2,x3)
library(dplyr)
df %>% mutate(RowSum=rowSums(.[setdiff(names(.),"x3")]))

輸出

   x1    x2    x3  RowSum
1  0.67  0.63 -0.12 1.30
2  -0.41 0.36 -1.14 -0.05
3  0.73  0.85  0.29  1.58
4 -3.14  0.16  0.65 -2.98
5 -0.07  0.76  0.07  0.69
6 -0.05 -0.26 -2.03 -0.31
7 -1.61  0.36  0.88 -1.25
8 -1.48 -0.90  1.10 -2.38
9 -2.27 -2.92 -0.06 -5.19
10 -0.78 -1.89 -0.10 -2.67
11 -0.06 -1.30 -1.43 -1.36
12 -0.15 -0.57 0.40 -0.72
13  0.31  -0.46 -0.46 -0.15
14 -0.40 -0.16 -1.06 -0.56
15 -0.07 -1.62 -0.23 -1.69
16  0.29  0.00  0.29 0.29
17 -0.61  0.53  1.67  -0.08
18  0.86 -0.54 -1.40 0.32
19  0.85 0.17 -0.37 1.02
20  0.61 -1.46 0.27 -0.85

更新於: 2021-08-13

1K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告