2017-02-01 26 views
0

假設我的數據包含學校中名稱和分數的一些信息。從不同的數據中獲得最高水平的值

name = c('Ann','Dann','Pann', 'Sam', 'Lora', 'Peter') 
score = c(30,30,50,70,20,10) 
school = data.frame(name=name, score=score) 

我可以使用'which.max'來查找最高級別的數據。

data = school[which.max(school$score),] 
data$name 
[1] Sam 

現在我想找到在Aclass集中得分最高的名稱。

Aclass = c('Peter','Pann', 'Lora', 'Smith') 

結果應該是

[1] 'Pann' 

請注意 '史密斯' 是不是學校數據的一部分。 無論Aclass中包含多少新名字,我想找到的只是學校數據中得分最高的名稱。我應該做些什麼代碼才能得到它?

回答

1

該方法使用with搜索data.frame學校的子集來減少鍵入。

with(school[school$name %in% Aclass,], name[which.max(score)]) 

[1] Pann 
Levels: Ann Dann Lora Pann Peter Sam 
+1

另外'學校$ name [which.max(學校$分數*(學校$名稱%在%Aclass))]''避免子集。 – nicola

+0

太棒了!謝謝。 – Rcoding