Re: [R] Data frame with 3 columns to matrix

From: Michael Bach <phaebz_at_gmail.com>
Date: Tue, 19 Apr 2011 15:16:54 +0300

David Winsemius <dwinsemius_at_comcast.net> writes:

> 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
>
>

Thanks for your answer David,

but this yields a diagonal matrix only. I think I did not make myself clear enough. In the original 3 column data frame, there could have been a pair of x and y with identical y's but different x's and z's. The way my data source is derived, there is a guarantee that there is are no two rows with identical x and y in the original data frame. In the end, x and y serve as a grid, with z values at each point in the grid or NA's if there is no z value for a x and y pair. The number of rows in the data frame is then equal to the number of non-NA values in the resulting matrix.

Another try, lets assume this original data frame:

  x y z
1 2 5 1
2 2 6 1
3 3 7 1
4 3 8 1
5 3 9 1
6 5 10 2
7 5 11 2
8 5 12 2

Then I would like to get

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]

[1,]   NA    5    6    7    8    9   10   11   12
[2,]    2    1    1           
[3,]    2
[4,]    3              1    1    1
[5,]    3
[6,]    3
[7,]    5                             2    2    2
[8,]    5
[9,]    5

I left out all the NA's, except the first, where there is no z value, say e.g. x=5 and y=8.

Do you see what I mean?



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. Received on Tue 19 Apr 2011 - 12:21:20 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 19 Apr 2011 - 13:50:31 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive