Hi:

Loop? We don't need no steeenking loop!! Here's a way to create a matrix
with matrix indexing that you can attach with x to create a new data frame.
Calling your original data frame df,

> m <- matrix(NA, nrow = nrow(df), ncol = 3)
# Create the indices of the initialized matrix to modify
> idx <- cbind(1:nrow(m), df$z)
# Map the modifications to the matrix
> m[idx] <- df$y
> m
     [,1] [,2] [,3]
[1,]   13   NA   NA
[2,]   NA    8   NA
[3,]   NA   NA    7
[4,]   16   NA   NA
[5,]   NA    8   NA
[6,]   NA   NA    2
[7,]   11   NA   NA
[8,]   NA   NA    9
data1 <- as.data.frame(cbind(df$x, m))
names(data1) <- c("x", "y1", "y2", "y3")
> data1
   x y1 y2 y3
1 50 13 NA NA
2 14 NA  8 NA
3  3 NA NA  7
4  4 16 NA NA
5  6 NA  8 NA
6 10 NA NA  2
7 15 11 NA NA
8 14 NA NA  9

HTH,
Dennis

On Thu, Feb 25, 2010 at 5:17 AM, Juliet Ndukum <jpnts...@yahoo.com> wrote:

> I have a matrix, called data. I used the code below to rearrange the data
> such that the first column remains the same, but the y value falls under
> either columns 2, 3 or 4, depending on the value of z. If z=1 for example,
> then the value of y will fall under column 2, if z=2, the value of y falls
> under column 3, and so on.
>
> data
>  x  y z
> [1,] 50 13 1
> [2,] 14  8 2
> [3,]  3  7 3
> [4,]  4 16 1
> [5,]  6  8 2
> [6,] 10  2 3
> [7,] 15 11 1
> [8,] 14  9 3
> > data1 <- data.frame(matrix(0, length(x), ncol(data)+1))
> > colnames(data1) <- c("x","y1","y2","y3")
> > data1$x <- data[,1]
> > data1$y1 <- apply(data, 1, function(x) (ifelse(x[3]==1,x[2],NA)))
> > data1$y2 <- apply(data, 1, function(x) (ifelse(x[3]==2,x[2],NA)))
> > data1$y3 <- apply(data, 1, function(x) (ifelse(x[3]==3,x[2],NA)))
> > data1
>   x y1 y2 y3
> 1 50 13 NA NA
> 2 14 NA  8 NA
> 3  3 NA NA  7
> 4  4 16 NA NA
> 5  6 NA  8 NA
> 6 10 NA NA  2
> 7 15 11 NA NA
> 8 14 NA NA  9
>
> I used the apply function (three times) to generate the output below, which
> is as I wish to have it.
> Can any one write for me a for loop that would produce the same results.
>
> Thanks in advance.
> JN
>
>
>
>        [[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.
>

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

Reply via email to