try this:

> myData = data.frame(Name = c('a', 'a', 'b', 'b'), length = c(1,2,3,4), type
+ = c('x','x','y','z'))
>
> result <- do.call(rbind, lapply(split(myData, myData$Name), function(.name){
+ data.frame(Name = .name$Name[1L]
+ , length = mean(.name$length)
+ , type = if (all(.name$type[1L] == .name$type)) .name$type[1L] else NA
+ )
+ })
+ )
> result
  Name length type
a    a    1.5    x
b    b    3.5 <NA>
>



On Tue, Jul 3, 2012 at 12:04 PM, Filoche <pmassico...@hotmail.com> wrote:
> Hi everyone.
>
> I have these data :
>
> myData = data.frame(Name = c('a', 'a', 'b', 'b'), length = c(1,2,3,4), type
> = c('x','x','y','z'))
>
> which gives me:
>
>   Name length type
> 1    a      1    x
> 2    a      2    x
> 3    b      3    y
> 4    b      4   z
>
> I would group (mean) this DF using 'Name' as grouping factor. However, I
> have a field ('type') which is a string. I would like to use the unique
> value of this field when possible (i.e. when all the 'type' values are the
> same for each group) or replace with NA when 'type' has multiple values.
>
> In fact, I would like to obtain this:
>
>   Name length type
> 1    a      1.5    x
> 2    b      3.5    NA
>
> For instance, I was using this command:
>
> aggregate(list(myData$length, myData$type), list(myData$Name), FUN = mean)
>
> But it can't deal with string data.
>
> I hope I have been clear enough.
>
> With regards,
> Phil
>
> --
> View this message in context: 
> http://r.789695.n4.nabble.com/Data-manipulation-with-aggregate-tp4635298.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.



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

______________________________________________
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