Hello,

marc212 wrote
> 
> I have the following:
> Time   A1   A1   B1   B1   C1   C2
>               x     y     x      y       x     y
>  0         5     6      6      7      7      9
>   1         3     4      4      3      9      9  
>   2         5     2      6      4     7       4
> 
> I want to change it to the following:
>         0           1             2
>         x    y     x    y     x    y 
> A1  5    6     3   4      5    2
> B1  6    7     4   3      6   4
> etc for a much larger set
> 
> I am sure there are ways to accomplish through a lot of for loops but I
> feel there is most likely a function to use.
> 
> Thank you.
> 

Using Petr's Orig data.frame above, maybe this is what you want.

cnames <- unique(colnames(Orig))
nc <- ncol(Orig)/length(cnames)

res <- lapply(seq.int(nrow(Orig)), function(i){
                x <- Orig[i, ]
                dim(x) <- c(length(cnames), nc)
                dimnames(x) <- list(cnames, LETTERS[seq_len(nc)])
                t(x)
        })
names(res) <- rownames(Orig)
res
do.call(cbind, res)

And it avoids loops.

Hope this helps,

Rui Barradas


--
View this message in context: 
http://r.789695.n4.nabble.com/Breaking-up-a-Row-in-R-transpose-tp4607658p4609488.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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