如何在數值列中找到因子水平的最大值,並在R資料框中返回包含其他列的輸出?


當我們有一個因子列來幫助區分數值列時,我們可能希望找到每個因子水平的最大值。這將有助於我們根據最大值比較因子水平,如果我們想透過獲取資料框中的所有列來做到這一點,則需要將聚合函式與合併函式一起使用。

考慮以下資料框 -

示例

 線上演示

set.seed(78)
Group<-sample(LETTERS[1:5],20,replace=TRUE) Rank<-sample(1:10,20,replace=TRUE)
Score<-sample(1:100,20)
df1<-data.frame(Group,Rank,Score)
df1

輸出

Group Rank Score
1 D 2 5
2 E 4 67
3 D 4 59
4 D 5 40
5 E 6 4
6 C 10 70
7 B 10 61
8 B 4 72
9 A 4 29
10 C 5 89
11 E 1 99
12 C 1 37
13 B 7 83
14 D 4 50
15 B 1 48
16 D 10 9
17 B 1 36
18 D 3 46
19 A 3 34
20 B 10 71

查詢Group因子水平的最大分數,並返回包含所有列的輸出 -

示例

merge(aggregate(Score~Group,df1,max),df1,by=c("Group","Score"))

輸出

Group Score Rank
1 A 78 8
2 B 79 3
3 C 73 5
4 D 99 6
5 E 98 4

讓我們看另一個例子 -

示例

 線上演示

Class<-sample(c("First","Second","Third"),20,replace=TRUE)
Gender<-sample(c("Male","Female"),20,replace=TRUE)
Years<-sample(1:5,20,replace=TRUE)
df2<-data.frame(Class,Gender,Years)
df2

輸出

Class Gender Years
1 Third Female 5
2 First Female 4
3 Third Female 5
4 Third Male 4
5 Second Male 4
6 Third Female 3
7 First Male 1
8 Third Male 2
9 First Female 5
10 Second Male 5
11 Second Male 5
12 Third Female 3
13 Third Female 1
14 Second Male 4
15 First Male 2
16 Second Female 1
17 First Female 5
18 Third Female 5
19 Second Female 4
20 First Male 3

查詢Class因子水平的最大年份,並返回包含所有列的輸出 -

示例

merge(aggregate(Years~Class,df2,max),df2,by=c("Class","Years"))

輸出

  Class Years Gender
1 First   5   Male
2 First   5   Male
3 First   5   Male
4 Second  5   Male
5 Second  5   Female
6 Second  5   Female
7 Third   4   Male

更新於: 2020年10月10日

591 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.