Hello,
Try the following. Maybe there are simpler ways, but it seems to work.
fun <- function(df1, df2){
pres.abs <- function(x, y){
x <- as.logical(x)
y <- as.logical(y)
1*(x & !y)
}
res <- matrix(nrow = nrow(df1), ncol = ncol(df1) - 1)
rownames(res) <- df1$site
colnames(res) <- colnames(df1)[-1]
for(st in df1$site){
for(sp in colnames(res)){
res[st, sp] <- pres.abs(df1[st, sp], df2[st, sp])
}
}
res <- cbind(res, sum = rowSums(res))
as.data.frame(res)
}
imm2 <- fun(speciesTime2, speciesTime1)
Exti2 <- fun(speciesTime1, speciesTime2)
Hope this helps,
Rui Barradas
Em 30-05-2013 22:28, Kristi Glover escreveu:
Hi R -Users
I am sorry for bothering you. I was wondering what script can work to calculate
an immigration and extinction from two tables (time 1 and time 2). I could
easily calculate them in the Excel for small data set, but I have very big
data set. so that I was wondering to use R for this calculation. But I could
not figure it out to write these logical function in R. Would you provide me
some hints?
For example, I have these two tables
speciesTime1<-structure(list(site = 1:4, sp1 = c(0L, 1L, 1L, 0L), sp2 = c(0L,
1L, 1L, 0L), sp3 = c(1L, 0L, 1L, 0L)), .Names = c("site", "sp1",
"sp2", "sp3"), class = "data.frame", row.names = c(NA, -4L))
speciesTime2<-structure(list(site = 1:4, sp1 = c(1L, 0L, 1L, 1L), sp2 = c(0L,
1L, 1L, 1L), sp3 = c(1L, 1L, 0L, 1L)), .Names = c("site", "sp1",
"sp2", "sp3"), class = "data.frame", row.names = c(NA, -4L))
From these two tables: I wanted to make the following two tables (Imm and Exti]
[Imm means number of "sp" present in speciesTime2, but not in speciesTime1]
imm<-structure(list(sp1 = c(1L, 0L, 0L, 1L), sp2 = c(0L, 0L, 0L, 1L
), sp3 = c(0L, 1L, 0L, 1L), sum = c(1L, 1L, 0L, 3L)), .Names = c("sp1",
"sp2", "sp3", "sum"), class = "data.frame", row.names = c(NA,
-4L))
[Exti=number of "sp" absent in speciesTime2, but present in speciesTime1]
Exti<-structure(list(sp1 = c(0L, 1L, 0L, 0L), sp2 = c(0L, 0L, 0L, 0L
), sp3 = c(0L, 0L, 1L, 0L), sum = c(0L, 1L, 1L, 0L)), .Names = c("sp1",
"sp2", "sp3", "sum"), class = "data.frame", row.names = c(NA,
-4L))
Thanks
KG
===
[[alternative HTML version deleted]]
______________________________________________
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.