计算各因素之间的比值比

时间:2014-04-19 01:54:39

标签: r r-factor

乍一看这很容易,但是当我开始研究它时,我还不知道如何计算它。问题是计算每所学校通过女性与男性比较的优势比,数据构造如下:

set.seed(1000)
female = sample(c(0,1),size=20,replace=TRUE)
school = factor(sample(c(0:2),size=20,replace=TRUE),
            labels=c("A school","B school","C school"))
school = sort(school)
pass = sample(c(0,1),size=20,replace=TRUE)
data = data.frame(female,school,pass)

非常感谢!

2 个答案:

答案 0 :(得分:0)

您可以使用split-apply-combine计算,使用split函数按学校分解数据,使用lapply运行计算优势比的函数,并使用{{ 1}}结合结果:

unlist

我在这里计算的实际上是一个风险比,因为对于你的数据集,优势比都是无穷大或0。

答案 1 :(得分:0)

tableprop.table为每所学校提供您想要的内容。 by将调用数据框中每个学校的功能。作为包functional的粉丝,我将使用它来创建函数:

> require(functional)
> by(data[c('female', 'pass')], data$school,
       Compose(table, Curry(prop.table, margin=1))
    )
data$school: A school
      pass
female         0         1
     0 0.3333333 0.6666667
     1 0.0000000 1.0000000
------------------------------------------------------------------------------------------------ 
data$school: B school
      pass
female   0   1
     0 0.5 0.5
     1 0.0 1.0
------------------------------------------------------------------------------------------------ 
data$school: C school
      pass
female         0         1
     0 0.0000000 1.0000000
     1 0.3333333 0.6666667

请注意,Compose(table, Curry(prop.table, margin=1))相当于function(x) prop.table(table(x), margin=1)