With this dataframe:
table <- \" trt rep ss d1 d4 d5 d6 d7 1 1 1 0 0 0 0 0 1 1 2 0 0 0 0 0 1 1 3 0
We can use dplyr
dplyr
library(dplyr) d %>% group_by(trt) %>% summarise_each( funs(round(mean(.>0, na.rm=TRUE),2)), d1:d7) # trt d1 d4 d5 d6 d7 # (int) (dbl) (dbl) (dbl) (dbl) (dbl) #1 1 0 0.22 0.44 0.56 0.56 #2 2 0 0.00 0.00 0.38 0.50