Matías de Felipe Matías de Felipe - 7 months ago 42
R Question

How to sum cells with a splitting criterion?

I have three different treatments and within each one I have five sample values. I am into difficulties in how to sum the five values corresponding at each treatment.

Really I am working with a big dataframe which management is not too easy for me.

Below there is the dataframe

and the srcipt that I am using but with non positive results (see below):

Treatment Variable
A1 0.020408163
A1 0.040816327
A1 0.06122449
A1 0.081632653
A1 0.102040816
A2 0.12244898
A2 0.142857143
A2 0.163265306
A2 0.183673469
A2 0.204081633
A3 0.224489796
A3 0.244897959
A3 0.265306122
A3 0.285714286
A3 0.306122449


Add<-sapply(split(dataexample_2, dataexample_2$Treatment), function(d) sum(dataexample_2$Variable,na.rm = FALSE))

I am obtaining:

A1 2.44898
A2 2.44898
A3 2.44898

And I wish to obtain:

A1 0.3061
A2 0.8163
A3 1.3265

Any help will be really appreciated. Thanks in advance. Regards. Matías.


The problem with your code is that you refer to the whole data in your anonymus function(d) instead of the current data d.

The following corrected line does what you want:

sapply(split(dataexample_2, dataexample_2$Treatment), function(d)  sum(d$Variable,na.rm = FALSE))

Also I would suggest that you have a look at tapply which is better suited for the task you want to accomplish than sapply. It can do the whole thing much clearer:

tapply(dataexample_2$Variable, dataexample_2$Treatment, sum)