如何在數值列中找到因子水平的最大值,並在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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP