You're good!

Thanks again :)

Ben Gillespie
Research Postgraduate

School of Geography
University of Leeds
Leeds
LS2 9JT

Tel: +44(0)113 34 33345
Mob: +44(0)770 868 7641
http://www.geog.leeds.ac.uk/
________________________________________
From: arun [smartpink...@yahoo.com]
Sent: 25 September 2012 17:04
To: Benjamin Gillespie
Cc: R help
Subject: Re: [R] Script to count unique values from two linked matricies

Hi Ben,

No problem.

The code could be collapsed to 2 steps:
library(data.table)
library(reshape)
datm<-merge(melt(dat1),melt(dat2),by="Species")
dat3<-data.frame(unlist(lapply(lapply(split(datm,datm$variable.x),function(x) 
data.table(x[!is.na(x$value.x),])),function(x) 
sum(x[,list(length(unique(value.y))),list(variable.y)]$V1))))
 colnames(dat3)<-"Trait_Richness"
dat3
#      Trait_Richness
#Site1              5
#Site2              7
#Site3              3
A.K.




----- Original Message -----
From: Benjamin Gillespie <gy...@leeds.ac.uk>
To: arun <smartpink...@yahoo.com>
Cc: PIKAL Petr <petr.pi...@precheza.cz>; Rui Barradas <ruipbarra...@sapo.pt>; 
Heramb Gadgil <heramb.gad...@gmail.com>; R help <r-help@r-project.org>
Sent: Tuesday, September 25, 2012 9:34 AM
Subject: RE: [R] Script to count unique values from two linked matricies

Excellent - thanks so much.

Ben Gillespie
Research Postgraduate

School of Geography
University of Leeds
Leeds
LS2 9JT

Tel: +44(0)113 34 33345
Mob: +44(0)770 868 7641
http://www.geog.leeds.ac.uk/
________________________________________
From: arun [smartpink...@yahoo.com]
Sent: 25 September 2012 14:22
To: Benjamin Gillespie
Cc: PIKAL Petr; Rui Barradas; Heramb Gadgil; R help
Subject: Re: [R] Script to count unique values from two linked matricies

Hi Ben,

Just a modification of Petr's solution with library(data.table):
dat1<-data.frame(Species=paste0("Species",1:3),Site1=c(5,NA,4),Site2=c(3,2,4),Site3=c(NA,5,NA))
dat2<-data.frame(Species=paste0("Species",1:3),Trait1=1:3,Trait2=c(2,4,2),Trait3=c(5,1,1))
library(data.table)
library(reshape)
datm<-merge(melt(dat1),melt(dat2),by="Species")
temp<-list(data.table(datm[datm[,2]=="Site1" & 
!is.na(datm[,3]),]),data.table(datm[datm[,2]=="Site2" & 
!is.na(datm[,3]),]),data.table(datm[datm[,2]=="Site3" & !is.na(datm[,3]),]))
Trait_Richness<-unlist(lapply(temp, function(x) 
sum(x[,list(length(unique(value.y))),list(variable.y)]$V1)))
dat3<-data.frame(Site=colnames(dat1)[2:4],Trait_Richness=Trait_Richness)
dat3
#   Site Trait_Richness
#1 Site1              5
#2 Site2              7
#3 Site3              3
A.K.



----- Original Message -----
From: Benjamin Gillespie <gy...@leeds.ac.uk>
To: Heramb Gadgil <heramb.gad...@gmail.com>
Cc: arun <smartpink...@yahoo.com>; "r-help@r-project.org" <r-help@r-project.org>
Sent: Tuesday, September 25, 2012 8:56 AM
Subject: RE: [R] Script to count unique values from two linked matricies

Fantastic help - thanks guys.

Heramb, Pikal and Rui all came up with solutions.

I prefer Rui's as it seems the simplest.

I'm going to try and work through them to understand exactly what's going on at 
each stage.

Thanks again all,

Ben Gillespie
Research Postgraduate

School of Geography
University of Leeds
Leeds
LS2 9JT

Tel: +44(0)113 34 33345
Mob: +44(0)770 868 7641
http://www.geog.leeds.ac.uk/
________________________________________
From: Heramb Gadgil [heramb.gad...@gmail.com]
Sent: 25 September 2012 10:38
To: Benjamin Gillespie
Cc: arun; r-help@r-project.org
Subject: Re: [R] Script to count unique values from two linked matricies

We can have something like this;

Data1<-data.frame(Site1=c(5,NA,4),Site2=c(3,2,4),Site3=c(NA,5,NA))
Data2<-data.frame(TraitType1=c(1,2,3),TraitType2=c(2,4,2),TraitType3=c(5,1,1))

rownames(Data1)<-paste("Species",1:3)

rownames(Data2)<-paste("Species",1:3)

User_Defined=function(dat1,dat2){c1=ncol(dat1)

out=NULL

dummy=lapply(1:c1,function(x){step1=dat1[,x]

step2=dat2[which(is.na<http://is.na>(step1)==F),]

step3=length(unlist(apply(step2,2,unique)))

out<<-c(out,step3)

})

Final<-data.frame(TraitRichness=out)

rownames(Final)<-paste('Site',1:3)

Final_Table<<-Final

}

User_Defined(Data1,Data2)

Final_Table


I hope this is what you need.

Best,
Heramb

On Tue, Sep 25, 2012 at 1:41 PM, Benjamin Gillespie 
<gy...@leeds.ac.uk<mailto:gy...@leeds.ac.uk>> wrote:
Hi,

Thanks for helping me with this one.

To save you time, the following is the code for the tables I uploaded as jpegs 
that you may not have received:

dat1<-data.frame(Species=paste("Species",1:3),Site1=c(5,NA,4),Site2=c(3,2,4),Site3=c(NA,5,NA))
dat2<-data.frame(Species=paste("Species",1:3),TraitType1=c(1,2,3),TraitType2=c(2,4,2),TraitType3=c(5,1,1))
dat3<-data.frame(Site=paste("Site",1:3),Trait_Richness=c(5,7,3))

So,

I have two matricies, dat1 and dat2.

Dat1 is a species abundance matrix. Dat2 is a species trait matrix.

I want to create dat3 through use of a script.

Dat 3 is a count of unique traits observed at each site. i.e. at site 1, 
species 1 and 3 are present (ass seen in dat1). Species 1 has traits: 1, 2 and 
5 for trait types 1, 2 and 3 respectively. Species 3 has traits: 3, 2 and 1 for 
trait types 1, 2 and 3 respectively.

So, at site 1:

For trait type 1, 2 unique traits were observed. For trait type 2, 1 unique 
trait was observed (both species 1 and 3 were classed as "1") and for trait 
type 3, 2 unique traits (trait richness) were observed; thus, 2+1+2=5.

and so on... so at site 2, all three species were observed...

For trait type 1, 3 unique traits were observed (1, 2, 3), for trait type 2, 2 
unique traits were observed (2, 4, 2) and for trait type 3, 2 unique traits 
were observed (5, 1, 1). So, for site 2, trait richness is 7 (3+2+2) traits.

I hope this helps to explain, please let me know if you need any further 
information,

Ben Gillespie
Research Postgraduate

School of Geography
University of Leeds
Leeds
LS2 9JT

Tel: +44(0)113 34 33345
Mob: +44(0)770 868 7641
http://www.geog.leeds.ac.uk/
________________________________________
From: arun [smartpink...@yahoo.com<mailto:smartpink...@yahoo.com>]
Sent: 24 September 2012 19:36
To: Benjamin Gillespie
Subject: Re: [R] Script to count unique values from two linked matricies

HI Ben,

Sorry,I couldn't understand how you counted the trait richness.  Could you 
elaborate?
A.K.


----- Original Message -----
From: benrgillespie <gy...@leeds.ac.uk<mailto:gy...@leeds.ac.uk>>
To: r-help@r-project.org<mailto:r-help@r-project.org>
Cc:
Sent: Monday, September 24, 2012 7:47 AM
Subject: [R] Script to count unique values from two linked matricies

I hope you can help with this one.

I have two matricies:

1. A species abundance matrix:

<http://r.789695.n4.nabble.com/file/n4643979/2species_matrix.jpg>

2. A species trait score matrix:

<http://r.789695.n4.nabble.com/file/n4643979/2trait_matrix.jpg>

The trait matrix lists trait scores for each species as listed in the
species abundance matrix.

I would like to create a script that would effectively count the unique
traits (trait richness) for each site and produce an output like this:

<http://r.789695.n4.nabble.com/file/n4643979/trait_richness.jpg>

Firstly, is this possible in R? Secondly, if so, how would you go about
writing a script to achieve my aim?

Many thanks in advance, please let me know if you need further information.

Ben Gillespie (Research Postgraduate)



--
View this message in context: 
http://r.789695.n4.nabble.com/Script-to-count-unique-values-from-two-linked-matricies-tp4643979.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help@r-project.org<mailto:R-help@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.

______________________________________________
R-help@r-project.org<mailto:R-help@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.

______________________________________________
R-help@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.

Reply via email to