Calculate proportion of positives values by group

前端 未结 3 572
生来不讨喜
生来不讨喜 2021-01-16 12:16

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          


        
3条回答
  •  醉酒成梦
    2021-01-16 12:40

    Using data.table, something like this:

    library(data.table)
    d <- data.table(d)
    d[,lapply(.SD,function(x) sum(x>0,na.rm=T)/sum(!is.na(x))),
      .SDcols=grep("^d",names(d),val=T),
       by=trt]
    
       trt d1        d4        d5        d6        d7
    1:   1  0 0.2222222 0.4444444 0.5555556 0.5555556
    2:   2  0 0.0000000 0.0000000 0.3750000 0.5000000
    

提交回复
热议问题