Agreed --- if you provided a working example it might be as simple as,


library(reshape)
recast(res, Id~Tick, fun="mean", id.var=c("Id", "Tick"), measure.var="X")

which i had to test with this,

res <- list(read.table(textConnection(
        "Id    X     Tick
1     2.2   1
2     3.1   1
1     1.2   2
2     2.2   2       "), head=T),
  read.table(textConnection(
        "Id      X     Tick
 1       1.4   1
 2       3.2   1
 1       1.1   2
 2       3.0   2 "), head=T))


baptiste

On 20 Mar 2009, at 17:27, David Winsemius wrote:

I say again:

Build a simple example;

-- David Winsemius
On Mar 20, 2009, at 1:00 PM, Altaweel, Mark R. wrote:

I will try to be clearer with what I wanted.

What I am trying to do is take a list, say defined as res, that has
a size of 1000

For example:

res[[1]]
res[[2]]                      .....until res[[1000]]
----------------------------------------------
Id    X     Tick        Id      X     Tick             ........
1     2.2   1            1       1.4   1
2     3.1   1            2       3.2   1
1     1.2   2            1       1.1   2
2     2.2   2            2       3.0   2

Now, say I want to get the mean of Id=1 or Id=2 for all instances
where Tick=1 or Tick=2. So in the example, the result for X when
Id=1 and Tick=1 is: 1.8 (i.e., the average between 2.2 and 1.4 in
res[[1]] and res[[2]]). However, in reality I would calculate the
mean for all 1000 instances of Tick=1 and Id=1. I would also do this
for all Id and Tick values.

So basically this is what I would like to do for all the 1000
elements in my list. Take the Id and Tick values for each of the
elements and find the mean of the x value for all 1000 instances
that occur for the given Id and Tick values.

It would be nice to get the result in a form such as:

result<- (some function that does what I want for all Ids and Tick
values in the 1000 element list)

result
--------------------
Id    meanX    Tick
1      1.8          1
2      3.15        1
1      1.15        2
2      2.6          2


This is what I tried in order to get the mean for all tick values
less than 601 and Ids greater than 0:

weightX<-sapply(res, function(.df) {mean(.df$X[.df$Id>0 & .df
$Tick<601])})

This does not work as it seems to not provide the mean across all
the elements and ids included in the conditional. I think the result
is it just overwrites the previous answer so my final results is not
as large as I would expect.

Thanks again in advance.


Mark

-----Original Message-----
From: baptiste auguie [mailto:ba...@exeter.ac.uk]
Sent: Fri 3/20/2009 4:32 AM
To: Altaweel, Mark R.
Cc: r-help@r-project.org
Subject: Re: [R] functions within a list

Hi,


you could have a look at the doBy package which makes these operations
easier. Hadley's plyr package is also another option.

baptiste

On 20 Mar 2009, at 01:01, Altaweel, Mark R. wrote:

Hi,

I am trying to perform various functions on a list with a number of
elements. For example. I would like to take the mean of different
variable values in the entire list. As an example,
say I have a list with 1000 elements and variables called Id and
Tick. What I would like to do is take the mean of a variable called
X for each Tick in the data element. So, there can be say 1 to 600
tick values per element in a list, that would mean I would like to
find the 600 mean values for each of the ticks values in the 1000
elements.


I tried a simple attempt below, but I am sure it is way off as it
didn't produce what I expected:

//res=res[[1..1000]]
weightX<-sapply(res, function(.df) {mean(.df$X[.df$Id>0 & .df
$Tick<601])})

Basically, I was trying to get the mean for all tick values less
than 600 that have an Id variable greater than 0. So, since there
are 600 ticks I would like to return a result with 600 mean values,
for each of the 600 ticks, that factors all the 1000 occurrences of
each tick, starting from 1.

I hope this is clear. Thanks in advance.

Mark

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

_____________________________

Baptiste AuguiƩ

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag

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

David Winsemius, MD
Heritage Laboratories
West Hartford, CT


_____________________________

Baptiste AuguiƩ

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag

______________________________________________
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