[R] t-test for multiple variables

Simon Anders anders at ebi.ac.uk
Fri Jul 18 12:37:24 CEST 2008

Hi Henning,

Henning Wildhagen wrote:
> Given a dataframe of three columns, where col1 is of type factor, col 2 and 
> col3 are numeric and pairs of observations i would like to perform a paired 
> t-test for each level of col1.
> I would like to avoid specifying the levels of col1 manually because it 
> seems to me as being stupid, however, i did not figure out how to tell it R 
> in an function. I tried with tapply, but it did not work.

That's what 'tapply' is meant for. Try this:

tapply( 1:nrow(df), df$col1, function(r)
    t.test( df$col2[r], df$col3[r], paired=TRUE  ) )

Here, tapply calls the fucntion in the second line for each level of 
col1, always passing the row indices of the rows with this level as 
parameter 'r'.


More information about the R-help mailing list