2009-10-14 22 views
15

Mam zestaw danych pokazujący kurs wymiany dolara australijskiego w stosunku do dolara amerykańskiego raz dziennie przez okres około 20 lat. Mam dane w ramce danych, przy czym pierwsza kolumna jest datą, a druga kolumna jest kursem wymiany. Oto próbka z danych:Jak znaleźć górny n% rekordów w kolumnie ramki danych za pomocą R

>data 
      V1  V2 
1 12/12/1983 0.9175 
2 13/12/1983 0.9010 
3 14/12/1983 0.9000 
4 15/12/1983 0.8978 
5 16/12/1983 0.8928 
6 19/12/1983 0.8770 
7 20/12/1983 0.8795 
8 21/12/1983 0.8905 
9 22/12/1983 0.9005 
10 23/12/1983 0.9005 

Jak mogę wyświetlić górne n% tych rekordów? Na przykład. powiedzieć, że chcę zobaczyć dni i kursy wymiany dla tych dni, w których kurs wymiany mieści się w górnych 5% wszystkich kursów wymiany w zbiorze danych?

Odpowiedz

25

Na górę 5%:

n <- 5 
data[data$V2 > quantile(data$V2,prob=1-n/100),] 
+0

Dzięki bardzo! –

+17

Lub, aby zapisać trochę pisania: 'podzbiór (dane, V2> kwantyl (V2, prob = 1 - n/100))' – hadley

4

Na górę 5% także:

head(data[order(data$V2,decreasing=T),],.05*nrow(data))