Using the summarise function in package plyr is one way; taking df to be
your data frame with variable names V1-V4,

library(plyr)
summarise(subset(df, V3 == 'text3'), sum = sum(V4))
  sum
1 134

Another is to use the data.table package:

library(data.table)
dt <- data.table(df)
dt[V3 == 'text3', sum(V4)]
[1] 134

A third route would be with package sqldf, something like

sqldf(df, "select sum(V4) from df where V3 == 'text3'")

but sqldf is messed up on my system (probably because I didn't install it
properly) so the code is untested.

HTH,
Dennis

On Thu, Mar 17, 2011 at 3:50 AM, e-letter <inpost@gmail.com> wrote:

> On 15/03/2011, Francisco Gochez <fjgochez@googlemail.com> wrote:
> > Hi,
> >
> > What you are after is:
> >
> > datasubset <- dataset[ dataset[,3] == "text3", ]
>
> Thank you. For the set
>
> text1,23,text2,45
> text1,23,text3,78
> text1,23,text3,56
> text1,23,text2,45
>
> Is it possible to write a function that selects rows containing
> 'text3' and applies the function 'sum' to values '78' and '56'? The
> control statements described in the document 'an introduction to r'
> (Venables and Smith, 2010) suggest that the if statement would return
> 'true', to prevent a sum function being applied to 'true' results.
>
> ______________________________________________
> 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.
>

	[[alternative HTML version deleted]]

