On Apr 19, 2011, at 3:46 AM, Michael Bach wrote:

Dear R Users,

Lets assume I have this data frame:

    x y   z
1 1.00 5 0.5
2 1.02 5 0.7
3 1.04 7 0.1
4 1.06 9 0.4

x and y columns are sorted and the values not necessarily integers.  z
values are not sorted. Now I would like to create a matrix out of this with x as first column values and y as first row values. Matrix element
a_11 shall be left NA.  The a_ij should have the z value for the
corresponding x and y pair. The result shall be some sort of a grid and
then e.g. look like:

    [,1] [,2] [,3] [,4] [,5]
[1,]   NA    5    6    7    9 (y)
[2,] 1.00  0.5   NA   NA   NA
[3,] 1.02  0.7   NA   NA   NA
[4,] 1.04   NA   NA  0.1   NA
[5,] 1.06   NA   NA   NA  0.4
     (x)

This example is just for illustration. The resulting matrix should have
more numeric values than NA's.

I hope I made myself clear.

Perhaps but only if the third row of your example was incorrectly constructed:
>  dta <- rd.txt("   x y   z
1 1.00 5 0.5
2 1.02 5 0.7
3 1.04 7 0.1
4 1.06 9 0.4")
#rd.txt() is a combo fn of read.table and textConnection

> mat <- matrix(NA, ncol=NROW(dta)+1, nrow=NROW(dta)+1)
> mat[2:NROW(mat),1] <- dta[["x"]]
> mat[1,2:NROW(mat)] <- dta[["y"]]
> diag(mat) <- c(NA, dta[["z"]])
> mat
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA  5.0  5.0  7.0  9.0
[2,] 1.00  0.5   NA   NA   NA
[3,] 1.02   NA  0.7   NA   NA
[4,] 1.04   NA   NA  0.1   NA
[5,] 1.06   NA   NA   NA  0.4


Any hints on how to achieve this?  Is there
already a function that does it? All searches I did pointed me to data
type frame to matrix conversion...


David Winsemius, MD
West Hartford, CT

______________________________________________
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