2011-08-23 14 views
7

Mam zmiennej (Var), która przechowuje 10000 wartości i ma charakter całkowity.Zliczanie liczba razy wartość pojawia się

Chcę policzyć, ile razy 1000 lub więcej niż 1000 wartości liczbowej występuje na tej liście.

Dowolna jedna linijka w R?

Z góry dziękuję.

+2

Czego próbowałeś? – Iterator

Odpowiedz

11

sum(Var >= 1000) zrobi to tak długo, jak Var jest wektorem. Jeśli nie, musisz powiedzieć R, aby znaleźć Var wewnątrz obiektu, który zawiera. Oto przykład:

> set.seed(2) 
> Var <- sample(900:1100, 10) 
> Var 
[1] 937 1040 1014 933 1085 1084 925 1061 990 1005 
> Var >= 1000 
[1] FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE 
> sum(Var >= 1000) 
[1] 6 

ta wykorzystuje fakt, że TRUE = 1 i FALSE = 0.

+1

Na marginesie, jeśli chcesz zrobić to dla "Var == 1000", na pewno przeczytasz różnicę między "==" a "all.equal" –

10
sum(Var>=1000) 

Zasugeruj, że czytasz niektóre z wstępnych dokumentów R, tego rodzaju rzeczy pojawiają się cały czas. Poza tym, mam nadzieję, że nie jest to "lista", ale "wektor". Jeśli jest to "lista", to ... ummm, unlist() najpierw.

+0

Myślę, że miałeś na myśli '> =' nie tylko '>' –

+0

posortowane. mój błąd ... – Spacedman

+0

@Spacedman: Dziękuję za radę, gram z twoim skryptem symulacji MC. To, czego chcę, to zliczanie ile razy obserwowane nakładanie wystąpiło w twojej zmiennej symulacji, a następnie podzielenie go przez liczbę cykli. Da to pewien ułamek, który moim zdaniem może być użyty jako empiryczna wartość p. Jakieś sugestie ????? – Angelo

4

Spróbuj tego:

sum(r >= 1000) 

gdzie r jest wektorem. Działa to, ponieważ R automatycznie konwertuje wartości binarne TRUE/FALSE na wartości 1 i 0 podczas próby zsumowania wektora binarnego.

3

może nie tak wydajne, ale lubię

> length(which(Var>=1000)) 
0

Jest również możliwe zastosowanie:

vec <- sample(1:10, 15, replace = TRUE) 
table(vec > 2) 

lub

length(vec[vec>2]) 
Powiązane problemy