[R] Selecting section of matrix
David Winsemius
dwinsemius at comcast.net
Mon Aug 15 20:32:28 CEST 2011
On Aug 15, 2011, at 6:09 AM, mdvaan wrote:
> Hi,
>
> I have a question concerning the selection of data. Let's say that
> given
> list h created below, I would like to select a section of the 1999
> matrix.
> For a case (rownames and colnames) I would like to select the cells
> that
> have a value > 0. So for case 8025
>
> 8025 8026 8027
> 8025 1 1 1
> 8026 1 1 1
> 8027 1 1 1
>
> tst <- h$`1999`
> tst[tst[,"8025"]>0, tst["8025",]>0]
B
B 8025 8026 8027
8025 1 1 1
8026 1 1 1
8027 1 1 1
>
> And for case 8028
>
> 8028 8029
> 8028 1 1
> 8029 1 1
> tst[tst[,"8028"]>0, tst["8028",]>0]
B
B 8028 8029
8028 1 1
8029 1 1
And to do it programmatically:
sapply( colnames(tst), function(var) tst[tst[,var]>0, tst[var,]>0])
--
David.
>
>
>
> DF2 = data.frame(read.table(textConnection(" A B C
> 80 8025 1995
> 80 8026 1995
> 80 8029 1995
> 81 8026 1996
> 82 8025 1997
> 82 8026 1997
> 83 8025 1997
> 83 8027 1997
> 90 8026 1998
> 90 8027 1998
> 90 8029 1998
> 84 8026 1999
> 84 8027 1999
> 85 8028 1999
> 85 8029 1999"),head=TRUE,stringsAsFactors=FALSE))
>
> e <- function(y) crossprod(table(DF2[DF2$C %in% y, 1:2]))
> years <- sort(unique(DF2$C))
> f <- as.data.frame(embed(years, 3))
> g<-lapply(split(f, f[, 1]), e)
> h<-lapply(g, function (x) ifelse(x>0,1,0))# These are the adjacency
> matrices
> per year
> h
>
> Thanks very much!
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Selecting-section-of-matrix-tp3744570p3744570.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list