如何在R資料框中根據另一列選擇包含最大值的行?


為了在R資料框中根據另一列選擇包含最大值的行,我們可以按照以下步驟操作:

  • 首先,建立一個包含一個數值列和一個分類列的資料框。
  • 然後,使用tapply函式和max函式根據另一列查詢數值列中包含最大值的行。

示例1

建立資料框

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

 線上演示

x<-rnorm(20)
factor1<-sample(LETTERS[1:4],20,replace=TRUE)
df1<-data.frame(x,factor1)
df1

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

      x    factor1
1 -1.21231516 A
2 -0.01576519 B
3 0.59032593 D
4 -0.41583339 C
5 -0.38508102 A
6 -0.61177209 C
7 -0.52961795 C
8 0.30561837 A
9 -0.58067776 A
10 0.62246173 C
11 -0.58479709 C
12 0.09817433 B
13 1.11240042 C
14 0.29007306 B
15 -0.66345792 B
16 -1.80789902 A
17 0.33419804 C
18 -0.15665767 A
19 1.56775923 C
20 1.49345799 B

查詢基於另一列包含最大值的行

使用tapply函式根據df1中的factor1列查詢x列中行的最大值:

 線上演示

x<-rnorm(20)
factor1<-sample(LETTERS[1:4],20,replace=TRUE)
df1<-data.frame(x,factor1)
tapply(df1$x,df1$factor1,max)

輸出

      A          B       C       D
0.3056184 1.4934580 1.5677592 0.5903259

示例2

建立資料框

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

 線上演示

y<-sample(1:50,20)
factor2<-sample(c("Low","Medium","High"),20,replace=TRUE)
df2<-data.frame(y,factor2)
df2

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

y factor2
1 45 Low
2 2 Medium
3 5 High
4 33 Low
5 28 High
6 37 Medium
7 7 High
8 21 High
9 48 Low
10 18 High
11 15 High
12 38 High
13 20 Medium
14 4 Low
15 22 Medium
16 34 Low
17 32 Low
18 29 Low
19 24 High
20 17 Medium

查詢基於另一列包含最大值的行

使用tapply函式根據df2中的factor2列查詢y列中行的最大值:

tapply(df2$y,df2$factor2,max)

輸出

High Low Medium
38 48 37

更新於:2021年8月13日

781 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始
廣告