2017-02-24 2 views
-1

Ich habe einen Datenrahmen data.2016 und versuche, die Frequenz zu finden, in der "DIPL" auftritt (ohne Null), "DIPL" ist die Anzahl der Würmer Parasit gefunden in einem Fisch.Wie kann ich Nullen bei der Suche nach einer Frequenz ausschließen und in 4 Kategorien trennen

Daten sieht das so etwas wie:

data.2016 

Site DIPL 
1  0 
1  1 
1  1 
2  6 
2  8 
2  1 
2  1 
3  0 
3  0 
3  0 
4  1258 
4  501 

I ausgegeben werden soll wie folgt aussehen:

Site freq 
1  2 
2  4 
3  0 
4  2 

Daraus kann ich, aus dem 3 Fisch in site # 1 gefunden interpretieren (aus dem Datenrahmen), 2 von ihnen hatten Wurminfektionen.

Ich habe

versucht
aggregate(DIPL~Site, data=data.2016, frequency) #and get: 
    Site DIPL 
1 1 1 
2 2 1 
3 3 1 
4 4 1 

Gibt es eine Möglichkeit, die Anzahl der Fische zu zählen mit Würmern aus der DIPL Spalte (der Wert in der Spalte Bedeutung ist größer als Null) pro Standort?

Antwort

2

Verwenden Sie einfach eine benutzerdefinierte Funktion, die die Nullen entfernt.

aggregate(DIPL ~ Site, data.2016, function(x) length(x[x != 0])) # or sum(x != 0) 
# Site DIPL 
# 1 1 2 
# 2 2 4 
# 3 3 0 
# 4 4 2 

Eine andere Möglichkeit wäre, vorübergehend die DIPL Spalte zu verwandeln dann nur die Summe nehmen.

aggregate(DIPL ~ Site, transform(data.2016, DIPL = DIPL != 0), sum) 
# Site DIPL 
# 1 1 2 
# 2 2 4 
# 3 3 0 
# 4 4 2 

xtabs() ist auch Spaß ...

xtabs(DIPL ~ Site, transform(data.2016, DIPL = DIPL != 0)) 
# Site 
# 1 2 3 4 
# 2 4 0 2 

By the way, frequency ist für den Einsatz auf Zeitreihendaten.

Daten:

data.2016 <- structure(list(Site = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
4L, 4L), DIPL = c(0L, 1L, 1L, 6L, 8L, 1L, 1L, 0L, 0L, 0L, 1258L, 
501L)), .Names = c("Site", "DIPL"), class = "data.frame", row.names = c(NA, 
-12L)) 
0

Könnte etwas wie das sein wonach Sie suchen?

# first some fake data 
site <- c("A","A","A","B","B","B") 
numworms <- c(1,0,3,0,0,42) 
data.frame(site,numworms) 
    site numworms 
1 A  1 
2 A  0 
3 A  3 
4 B  0 
5 B  0 
6 B  42 

tapply(numworms, site, function(x) sum(x>0)) 
A B 
2 1 
+0

ah, mit Ihren Daten, so etwas wie 'mit (data.2016, tapply (DIPL, Standort, Funktion (x) Summe (x> 0)))' –

Verwandte Themen