thank you very much
I had managed with
df <- data.frame(a,b)
m <- lapply(split(df, df$a), function(x) x$b)
n <- max(sapply(m, length))
a <- t(sapply(m, function (x) c(x, rep(NA, n - length(x)))))
but your solution is much more elegant.
best regards
Marco
Il 3/14/2012 1:54 PM, R. Michael Weylandt ha scritto:
You can't have "empty" spots like that in an array. One choice would
be to fill them with NAs:
library(plyr)
do.call(rbind.fill.matrix,lapply(split(b,a), t))
Michael
On Wed, Mar 14, 2012 at 4:01 AM, Marco Guerzoni<marco.guerz...@unito.it> wrote:
Thank you fro the reply.
I managed to arrive till here, then I would like to have it in matrix where
the $1 $2...$5 are the first column.
Il 3/13/2012 8:15 PM, William Dunlap ha scritto:
Is the following what you want?
> a<- c(1,2,3,4,4,4,5,5)
> b<- c(11,7,4,9,8,3,12,4)
> split(b, a)
$1
[1] 11
$2
[1] 7
$3
[1] 4
$4
[1] 9 8 3
$5
[1] 12 4
Here I did
c<- split(b, a)
d<- do.call(rbind,c)
and I get
[,1] [,2] [,3]
1 11 11 11
2 7 7 7
3 4 4 4
4 9 8 3
5 12 4 12
Instead of what I would like:
[,1] [,2] [,3]
1 11
2 7
3 4
4 9 8 3
5 12 4
A solution could be rbind.fill , which does not seem to work with list.
thanks
Marco Guerzoni,
Department of Economics
University of Turin
Note that your df<-cbind(a,b) produces a matrix, not the data.frame
that your df suggests you want. Use df<-data.frame(a,b) to make
a data.frame. Then you could do with(df, split(a,b)) to operate on
the a and b in the data.frame df.
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
-----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org]
On Behalf
Of Marco Guerzoni
Sent: Tuesday, March 13, 2012 10:51 AM
To: r-help@r-project.org
Subject: [R] reshaping a dataset for a network
dear all,
apologizes for bothering with a probably stupid question but I really
don' t know how to proceed.
I have a dataset which look like df
a<- c(1,2,3,4,4,4,5,5)
b<- c(11,7,4,9,8,3,12,4)
df<-cbind(a,b)
I would like to have one which looks like this:
a
1 11
2 7
3 4
4 9 8 3
5 12 4
a are vertex of a network, b the edges. In the data the lenght of a is
about 50000
I read several posts about reshape, reshape2, split, ldply but I
couldn't manage to do it. The problem seems to be that the is not a real
panel.
Any help would be really appreciated,
my best regards
Marco
______________________________________________
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.
______________________________________________
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.
______________________________________________
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.