如何在 R 資料框的每一行中建立一個包含最大值列名的列?


要建立一個包含每一行最大值的列名的列,我們可以按照以下步驟操作:

  • 首先,建立一個數據框。

  • 然後,使用 dplyr 包的 mutate 函式以及 max.col 函式來建立一個包含 R 資料框每一行最大值的列名的列。

示例

建立資料框

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

x<-sample(1:50,25)
y<-sample(1:50,25)
z<-sample(1:50,25)
df<-data.frame(x,y,z)
df

輸出

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

    x  y  z
1   9 17 21
2  20 43 27
3  50 33 30
4  25  8 18
5  44  5 20
6  34 41 42
7  23 15 12
8   2 23 35
9  43 27  5
10 29 12 47
11 42 19 15
12 15 28 32
13 13 36 39
14 10 50 14
15 19 11 45
16  5 24 37
17 48  2 11
18 36 25 10
19 31 10 48
20 38 49 36
21 11 46  4
22 41  1 44
23  7 26 46
24 22 34  9
25 16 45  3

建立包含每一行最大值的列名的列

使用 dplyr 包的 mutate 函式以及 max.col 函式來建立包含資料框 df 每一行最大值的列名的列:

x<-sample(1:50,25)
y<-sample(1:50,25)
z<-sample(1:50,25)
df<-data.frame(x,y,z)
library(dplyr)
df %>% mutate(Class=names(.)[max.col(.)])

輸出

    x  y z  Class
1   9 17 21 z
2  20 43 27 y
3  50 33 30 x
4  25  8 18 x
5  44  5 20 x
6  34 41 42 z
7  23 15 12 x
8   2 23 35 z
9  43 27  5 x
10 29 12 47 z
11 42 19 15 x
12 15 28 32 z
13 13 36 39 z
14 10 50 14 y
15 19 11 45 z
16  5 24 37 z
17 48  2 11 x
18 36 25 10 x
19 31 10 48 z
20 38 49 36 y
21 11 46  4 y
22 41  1 44 z
23  7 26 46 z
24 22 34  9 y
25 16 45  3 y

更新於: 2021-11-15

1K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告