2016-04-12 2 views
-1

Ich versuche eine Analyse durchzuführen, bei der ich die relative Veränderung der Zusammensetzung der Gemeinschaft im Laufe der Zeit anhand der Sørensen- oder Bray-Curtis-Distanz wissen muss. I eine Matrix von Plots, die wie folgt aussieht:Wie manipuliere ich ein Entfernungsobjekt in r, um nur die gewünschten Werte zu extrahieren?

> example 
plot species_a species_b species_c 
1 1  0.16  0.25  0.00 
2 2  0.00  1.00  0.00 
3 3  0.70  0.00  0.25 
4 1  1.00  0.00  0.00 
5 2  0.10  0.40  0.50 
6 3  0.30  0.30  0.30 
7 1  0.20  0.20  0.60 
8 2  0.11  0.12  0.13 
9 3  0.00  0.00  0.90 

In diesem Beispiel Daten I 3 Plots, gemessen an 3 verschiedenen Zeitpunkten in meinem realen Daten habe ich 850 in 3 verschiedenen Zeitpunkten gemessen Plots . I kann leicht eine Entfernung Matrix R und die vegane Paketfunktion vegdist berechnen:

example<-example[,-1] 
di<-vegdist(example, method="bray") 
      1   2   3   4   5   6   7   8 
2 0.6453901                  
3 0.7647059 1.0000000                
4 0.7730496 1.0000000 0.2820513             
5 0.5035461 0.6000000 0.6410256 0.9000000           
6 0.3740458 0.6842105 0.4054054 0.6842105 0.2631579        
7 0.4893617 0.8000000 0.5384615 0.8000000 0.2000000 0.2631579      
8 0.4025974 0.8235294 0.6335878 0.8382353 0.4852941 0.4285714 0.4705882   
9 1.0000000 1.0000000 0.7297297 1.0000000 0.4736842 0.6666667 0.3684211 0.7936508 

Was würde Ich mag von meinem Abstand Objekt extrahieren ist, sind die Abstände zwischen den einzelnen Flächen zwischen jedem Zeitschritt wie folgt aus:

Plot distance1 distance 2 distance3 
1 0.5 0.75 0.9 
2 0.1 0.2 0.3 
3 0.01 0.1 0.5 

wo distance1 1 der Abstand von Zeit zu 2 sein würde, distance2 wäre der Abstand von 2 bis 3 und distance3 würde 3.

gibt es eine relativ einfache Möglichkeit, die Entfernung von Zeit 1 zu Zeit von extr Diese Information aus einem Distanzobjekt?

+0

Sie sollten eine Regel beschreiben, um von diesem "dist" -Objekt (oder vielleicht von Ihren Daten) zu Ihrer gewünschten Ausgabe zu gelangen. Ich sehe keine dieser Zahlen in diesem Objekt. Problembeschreibung mit den Wörtern "irgendwie" und "wie" sind von Natur aus unklar, und ich vermute, dass gewünschte Ausgabe nicht die genaue Antwort ist, die Sie wirklich von diesen Daten wollten. –

Antwort

0

Der einfachste Weg, um damit umzugehen, ist wahrscheinlich, die Daten nach Plot zu teilen und dann vegdist auf den drei Werten für jeden Plot laufen zu lassen.

require(plyr) 
require(vegan) 
ddply(example, .(plot), function(x)as.vector(vegdist(x[,-1]))) 

Sie sollten wahrscheinlich eine Zeitspalte haben. Damit könnten Sie die Daten ordnen, um sicherzustellen, dass die erste Spalte der Abstände immer die gleichen Zeiten darstellt.

Verwandte Themen