R: t test over multiple columns using t.test function

后端 未结 4 1272
梦如初夏
梦如初夏 2021-01-19 14:29

I tried to perform independent t-test for many columns of a dataframe. For example, i created a data frame

set seed(333)
a <- rnorm(20, 10, 1)
b <- rno         


        
4条回答
  •  深忆病人
    2021-01-19 14:57

    Simply extract the estimate and p-value results from t.test call while iterating through all needed columns with sapply. Build formulas from a character vector and transpose with t() for output:

    formulas <- paste(names(test_data)[1:(ncol(test_data)-1)], "~ grp")
    
    output <- t(sapply(formulas, function(f) {      
      res <- t.test(as.formula(f))
      c(res$estimate, p.value=res$p.value)      
    }))
    

    Input data (seeded for reproducibility)

    set.seed(333)
    a <- rnorm(20, 10, 1)
    b <- rnorm(20, 15, 2)
    c <- rnorm(20, 20, 3)
    grp <- rep(c('m', 'y'),10)
    test_data <- data.frame(a, b, c, grp)
    

    Output result

    #         mean in group m mean in group y   p.value
    # a ~ grp        9.775477        10.03419 0.5654353
    # b ~ grp       14.972888        14.81895 0.8678149
    # c ~ grp       20.383679        20.74238 0.7776188
    

提交回复
热议问题