gen_median_test = function(DF, data_name, group_name){ pooled_median = median(DF[, data_name]) mask = DF[, data_name] < pooled_median lt = table(DF[mask, group_name]) mask = DF[, data_name] >= pooled_median gt = table(DF[mask, group_name]) T = rbind(lt, gt) rownames(T) = c('lt_pmedian', 'gt_pmedian') ## are we less than or greater than the pooled_median cs = chisq.test(T) res = list(pooled_median=pooled_median, T=T, cs=cs) }