Hi,

I wouldn't know how to fill the data into the array form you want, but you can get the aggregated data with

dfm <- melt( df )
dfc <- cast( dfm, LOC ~ variable, sum )
> dfc
  LOC SPEC1 SPEC2
1   1    23     5
2   2    23     2
3   3     0     0

Hope this helps as a first step!

Rgds,
Rainer


On 2012-01-24 17:15, Johannes Radinger wrote:
Hello,

I would like to reshape a dataframe into an array. This is kind a similar task 
as Excel performs with a Pivot table. To illustrate it:

LOC<- factor(c(1,2,2,3,1,1))
SPEC1<- c(0,0,23,0,12,11)
SPEC2<- c(1,2,0,0,0,4)

df<- data.frame(LOC,SPEC1,SPEC2) # original dataframe

a<- 
array(NA,dim=c(length(levels(LOC)),1,2),dimnames=list(levels(LOC),"LOC",c("SPEC1","SPEC2")))
 #new array set up, how it should look like

The final array is splitted by the SPEC (for each SPEC an new layer), and
the LOC is collapsed so that there is only one line per level of LOC.
The array should get populated with:
1) the sums
2) and presence/absence (can be easily calculated from sums)

What is the best way to do that? I looked into reshape and apply...probably one 
of them is suitable but I don't know how...Or has that to be done with a loop?

cheers,
/johannes

______________________________________________
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