[R] Turn three Columns into a Matrix?
David Winsemius
dwinsemius at comcast.net
Tue Feb 23 23:53:07 CET 2010
On Feb 23, 2010, at 3:18 PM, Ortiz, John wrote:
> Hi all,
>
> If I have a data frame with 3 columns as follows:
>
>> ta
>
> Species Depth Counts
> spc_a 120 60
> spc_a 140 140
> spc_b 140 5
> spc_b 150 4
> spc_b 180 10
> spc_c 180 10
> spc_c 190 20
>
> How can I turn it into a dataframe or matrix with this structure?:
>
>
> 120 140 140 150 180 180 190
> spc_a 60 0 0 0 0 0 0
> spc_a 0 140 0 0 0 0 0
> spc_b 0 0 5 0 0 0 0
> spc_b 0 0 0 4 0 0 0
> spc_b 0 0 0 0 10 0 0
> spc_c 0 0 0 0 0 10 0
> spc_c 0 0 0 0 0 0 20
>
> I tried with matrify, but this function summarized.
>
> library(labdsv)
> matrify(ta)
>
> 120 140 150 180 190
> spc_a 60 140 0 0 0
> spc_b 0 5 4 10 0
> spc_c 0 0 0 10 20
>
> We are looking by one function similarly to matrify but without
> summary.
Not sure what that last sentence means but here is a a solution to
above request:
> ta <- read.table(textConnection("
+
+ Species Depth Counts
+ spc_a 120 60
+ spc_a 140 140
+ spc_b 140 5
+ spc_b 150 4
+ spc_b 180 10
+ spc_c 180 10
+ spc_c 190 20"), header=T)
> tdiag <- diag(ta$Counts, nrow=nrow(ta), ncol=nrow(ta))
> rownames(tdiag)<-ta$Species
> colnames(tdiag)<-ta$Depth
> tdiag
120 140 140 150 180 180 190
spc_a 60 0 0 0 0 0 0
spc_a 0 140 0 0 0 0 0
spc_b 0 0 5 0 0 0 0
spc_b 0 0 0 4 0 0 0
spc_b 0 0 0 0 10 0 0
spc_c 0 0 0 0 0 10 0
spc_c 0 0 0 0 0 0 20
>
> some advice?
>
> Thanks!!
>
> John Ortiz
> Smithsonian Tropical Research Institute
> ______________________________________________
> 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.
More information about the R-help
mailing list