2017-02-01 1 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

또한 하위 집합을 피하는'school $ name [학교 $ 이름 [학교 $ 점수 * (학교 $ 이름 % Aclass)]]'입니다. – nicola

+0

Brilliant! 고맙습니다. – Rcoding

관련 문제