2016-08-02 17 views
1

Ich wollte einen Vektor von Zählern erstellen, wenn möglich. Zum Beispiel: Ich habe einen VektorErstellen Sie einen Vektor von Zählern

x <- c(3, 0, 2, 0, 0)

Wie kann ich einen Frequenzvektor für alle ganzen Zahlen zwischen 0 und 3 erstellen? Idealerweise wollte ich so einen Vektor erhalten:

> 3 0 1 1

, die mir die Grafen von 0, 1, 2 und 3 jeweils gibt.

Sehr geschätzt!

+0

Mögliche Duplikat [Erstellen Sie die Frequenzzählung von einem Vektor in R] (http://stackoverflow.com/questions/20869374/create-the-frequency-count-from-a-vector-in-r) –

+2

Mögliches Duplikat von [zählt die Anzahl jedes Buchstabens in einem Vektor von Strings] (http://stackoverflow.com/questions/19476210/counting-the-number-of-each-letter-in-a-vector-of -Strings) – jogo

+0

Dies ist ein Duplikat, aber über 2 Links sind nicht die richtigen. – zx8754

Antwort

2

Sie können

table(factor(x, levels=0:3)) 

einfach tun mit table(x) nicht genug.

Oder mit tabulate, die schneller ist

tabulate(factor(x, levels = min(x):max(x))) 
+0

Ich habe das versucht, aber es gibt mir einen Fehler, Fehler in Faktor (Lücken, Etiketten = 0: 3): ungültige 'Etiketten'; Länge 4 sollte 1 oder 3 sein – Lin

+0

es funktioniert! danke Leute! – Lin

+2

Vielleicht ein bisschen "Robuster" Weg wäre 'r <- Bereich (x); Tabelle (Faktor (x, levels = r [1]: r [2])) ' –

1

Sie können nur Tabelle verwenden():

a <- table(x) 
a 
x 
#0 2 3 
#3 1 1 

Dann können Sie es Teilmenge:

a[names(a)==0] 
#0 
#3 

oder in eine umwandeln data.frame Wenn Sie damit besser arbeiten können:

u<-as.data.frame(table(x)) 
u 
# x Freq 
#1 0 3 
#2 2 1 
#3 3 1 

Edit 1: Für Ebenen:

a<- as.data.frame(table(factor(x, levels=0:3))) 
+0

Sie vermissen ein Level. Siehe die andere Antwort –

1

können Sie tun dies unter Verwendung rle (ich dies in Minuten, so traurig, wenn es nicht genug ist optimiert).

x = c(3, 0, 2, 0, 0) 
r = rle(x) 
f = function(x) sum(r$lengths[r$values == x]) 
s = sapply(FUN = f, X = as.list(0:3)) 
data.frame(x = 0:3, freq = s) 
#> data.frame(x = 0:3, freq = s) 
# x freq 
#1 0 3 
#2 1 0 
#3 2 1 
#4 3 1 
Verwandte Themen