更好地按组获取一个功能的代码?

时间:2017-05-23 10:03:54

标签: r dplyr aggregate

数据集名称:样本。

Col1:ID

Col2:SEX(2级“m”,“f”的因子)

Col3:SIU(2级“Y”,“N”的因子)

我想通过SIU获得SEX的比率。 我可以用这段代码得到结果:

prop.table(table(sample %>% filter(SIU=="N") %>% select(SEX) ))
prop.table(table(sample %>% filter(SIU=="Y") %>% select(SEX) ))

但它由2个句子组成,因此需要执行2次。

有更好,更简单的方法来做同样的事情吗?

编辑:

上述代码的结果

>            m            f 
> 0.4529346622 0.5470653378 
>     m            f 
> 0.3604651163 0.6395348837

这是我想要的,但我认为我的代码并不是最好的。

1 个答案:

答案 0 :(得分:0)

df <- data.frame(ID=c(1,3,4,5,3,4), SEX = c('m','f','m','f','f','f'), SIU= c('y','y','n','n','n','n'))
aggregate(df$SEX, by=list(df$SIU), function(x) table(x)/length(x))
# Group.1  x.f  x.m
# 1   n   0.75 0.25
# 2   y   0.50 0.50