manipulate a matrix2
The vegan matrix produces values of similarity between sample sites. Because the matrix uses the same samples for the row names and the column header it has duplicates on either side of the base diagonal (below). 3 7 8 11 12 3 0 0.6 1 0.3 0.85 7 0.66 0 1 0.65 0.95 8 1 1 0 1 1 11 0.3 0.65 1 0 0.9 12 0.85 0.95 1 0.9 0 Ideally, the matrix should look like; 3 7 8 11 12 3 0 7 0.66 0 8 1 1 0 11 0.3 0.65 1 0 12 0.85 0.95 1 0.9 0 This is probably a question for the Vegan developers, but I really appreciate your (and the lists) insight. -----Original Message----- From: jim holtman [mailto:jholtman at gmail.com] Sent: Monday, July 21, 2008 9:18 AM To: Jon Hak Cc: r-help at r-project.org Subject: Re: [R] manipulate a matrix2 I am not familiar with the vegdist function. What defines a duplicate in the matrix? There are ways if identifying if more than one row meets the criteria duplicates and then removing them. Can you give an illustration of what you mean with a before/after data representation. On Mon, Jul 21, 2008 at 10:22 AM, Jon Hak <Jon_Hak at natureserve.org> wrote:
Thanks Jim, that was exactly what I was after.
On a second note, do you have any insight into pulling out the
duplicates in this type of matrix?
I thought that was what the upper=FALSE is in:
csv.dis <- vegdist(csv.m, method='jaccard', binary=FALSE, diag=FALSE,
upper=FALSE). I just need either the lower or upper portion, with the
zeros (,3 & ,3) being the dividing line.
[,3] [,5] [,6] [,9] [,11]
[3,] 0 2 3 4 5
[5,] 2 0 8 9 10
[6,] 3 8 0 14 15
[9,] 4 9 14 0 20
[11,] 5 10 15 20 0
Thanks again,
Jon
-----Original Message-----
From: jim holtman [mailto:jholtman at gmail.com]
Sent: Friday, July 18, 2008 9:56 AM
To: Jon Hak
Cc: r-help at r-project.org
Subject: Re: [R] manipulate a matrix2
Is this what you want:
x
[,3] [,5] [,6] [,9] [,11] [,3] 1 6 11 16 21 [,5] 2 7 12 17 22 [,6] 3 8 13 18 23 [,9] 4 9 14 19 24 [,11] 5 10 15 20 25
library(reshape) melt(x)
X1 X2 value 1 [,3] [,3] 1 2 [,5] [,3] 2 3 [,6] [,3] 3 4 [,9] [,3] 4 5 [,11] [,3] 5 6 [,3] [,5] 6 7 [,5] [,5] 7 8 [,6] [,5] 8 9 [,9] [,5] 9 10 [,11] [,5] 10 11 [,3] [,6] 11 12 [,5] [,6] 12 13 [,6] [,6] 13 14 [,9] [,6] 14 15 [,11] [,6] 15 16 [,3] [,9] 16 17 [,5] [,9] 17 18 [,6] [,9] 18 19 [,9] [,9] 19 20 [,11] [,9] 20 21 [,3] [,11] 21 22 [,5] [,11] 22 23 [,6] [,11] 23 24 [,9] [,11] 24 25 [,11] [,11] 25
On Fri, Jul 18, 2008 at 11:10 AM, Jon Hak <Jon_Hak at natureserve.org> wrote:
Building upon Jim's answer below (Thanks Jim, that helped a lot), I
need
to pickup where this thread left off. I'm using Vegan to calculate
the
Jaccard's Index and the Row.Names and column names are represented in
my
matrix as seen here.
[,3] [,5] [,6] [,9] [,11]
[3,] 0 6 11 16 21
[5,] 2 0 12 17 22
[6,] 3 8 0 18 23
[9,] 4 9 14 0 24
[11,] 5 10 15 20 0
When I use the command;
xy <- cbind(row=as.vector(row.names(x)), col=as.vector(colnames(x)),
value=as.vector(x))
I get the list (the column value is the issue);
row col value
[1,] 3 1 0
[2,] 5 1 2
[3,] 6 1 3
[4,] 9 1 4
[5,] 11 1 5
[6,] 3 2 6
[7,] 5 2 0
[8,] 6 2 8
[9,] 9 2 9
[10,] 11 2 10
[11,] 3 3 11
[12,] 5 3 0
I would really like the col value to equal the actual name, not the
column number. What am I missing? The analysis is very large, 6k
x6k
matrix so automating the process is a high priority. Thanks, Jon From: jim holtman <jholtman_at_gmail.com
<mailto:jholtman_at_gmail.com?Subject=Re:%20%5BR%5D%20manipulate%20a%20m
atrix> > Date: Mon, 25 Jun 2007 12:39:46 -0400 Is this what you want?
x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 21
[2,] 2 7 12 17 22
[3,] 3 8 13 18 23
[4,] 4 9 14 19 24
[5,] 5 10 15 20 25
cbind(row=as.vector(row(x)), col=as.vector(col(x)),
value=as.vector(x))
row col value
[1,] 1 1 1
[2,] 2 1 2
[3,] 3 1 3
[4,] 4 1 4
[5,] 5 1 5
[6,] 1 2 6
[7,] 2 2 7
[8,] 3 2 8
[9,] 4 2 9
[10,] 5 2 10
[11,] 1 3 11
[12,] 2 3 12
[13,] 3 3 13
[14,] 4 3 14
[15,] 5 3 15
[16,] 1 4 16
[17,] 2 4 17
[18,] 3 4 18
[19,] 4 4 19
[20,] 5 4 20
[21,] 1 5 21
[22,] 2 5 22
[23,] 3 5 23
[24,] 4 5 24
[25,] 5 5 25
On 6/25/07, Jon Hak <Jon_Hak_at_natureserve.org> wrote:
I have read everything I can find on how to manipulate a results
matrix in
<http://tolstoy.newcastle.edu.au/R/e2/help/07/06/19875.html#19887qlink1>
R and I have to admit I'm stumped. I have set up a process to
extract
a
dataset from ArcGIS to compute a similarity index (Jaccards) in
Vegan.
The
dataset is fairly simple, but large, and consists of rows = sample
area, and
columns = elements. I've been able to view the results in R, but I
want to
get the results out to a database and a matrix that is 6000-rows x 6000-columns can be very difficult to manipulate in Windows XP. I
would to
rotate the matrix so that the output would look like the old
condensed
format in programs like Conoco. Ideally, I would like format to look something like this; Site-row Site-col Jaccard 1 1 1 1 2 .9 1 3 .6 2 1 .9 2 2 1 2 3 .75 Thanks for any help, *********************************************************** John Hak Senior GIS Analyst/Sr. Ecologist NatureServe 4001 Discovery Drive Boulder, CO 80303 (703) 797-4809 There is perhaps no better demonstration of the folly of human
conceits
than this distant image of our tiny world. To me, it underscores our responsibility to deal more kindly with one another, and to preserve
and
cherish the pale blue dot, the only home we've ever known. --Carl
Sagan
______________________________________________ R-help_at_stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
[[alternative HTML version deleted]]
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve?
Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve?