[R] question: data.frame data conversion

Rui Barradas ruipbarradas at sapo.pt
Sun Aug 4 19:56:49 CEST 2013


Hello,

First of all, do _not_ create a data frame with

as.data.frame(cbind(...))

Instead, use

z = data.frame(x, y)

As for your question, try the following.


library(reshape2)
fun <- function(z){
	zs <- split(z, x)
	n <- length(zs)
	m <- nrow(zs[[1]])
	zz <- cbind(id = rep(1:m, n), z)
	dcast(zz, id ~ x)[-1]
}

fun(z)


Hope this helps,

Rui Barradas


Em 04-08-2013 13:49, Brijesh Gulati escreveu:
> Hello, I have a data.frame with repeating rows and corresponding value. For
> instance, "z" will be an example of that.
>
>
>
> x = c("a","a", "a", "b","b","b")
>
>    y = c(1.0, 1.2, 1.1, 1.01, 1.03, 1.0)
>
>    z = as.data.frame(cbind(x,y))
>
>
>
>> z
>
>    x    y
>
> 1 a    1
>
> 2 a  1.2
>
> 3 a  1.1
>
> 4 b 1.01
>
> 5 b 1.03
>
> 6 b    1
>
>
>
> So, you see that "a" and "b" are repeated 3 times and have three different
> value. I would like to convert this data into something like the following.
>
>
>
>     a    b
>    1.0 1.01
>    1.2 1.03
>    1.1 1.00
>
>
>
> In the above, repeating rows (a,b) become columns and their values show up
> in their respective column.
>
> Finally, to clarify few things. The number of rows of each repeating item
> (a or b) would be the same and hence, the number of row expected in the
> output shall be the same.
>
>
>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> 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