将两个分类变量转换为汇总比例数据

时间:2014-01-18 20:59:24

标签: r plyr summary

在R中,

最有效的方式是什么:

   gender soda
1       f    y
2       f    y
3       f    n
4       m    n
5       f    y
6       m    n
7       m    n
8       f    y
9       m    y
10      m    n

         y   n
m       0.2 0.8
f       0.8 0.2

我使用以下命令:

> tmp<-ddply(subdata,.(gender), summarise, y=length(soda[soda=="y"])/length(soda),n=length(soda[soda=="n"])/length(soda))
> rownames(tmp)<-tmp$gender
> tmp$gender<-NULL
> tmp
    y   n
f 0.8 0.2
m 0.2 0.8

但我觉得必须有一些我不知道的惯用语。有吗?

1 个答案:

答案 0 :(得分:3)

您可以使用tableprop.table

> prop.table(table(subdata), 2)

      soda
gender   n   y
     f 0.2 0.8
     m 0.8 0.2

函数table计算每个组合的值。 prop.table计算沿第二边距的相对频率(即2:列)。

相关问题