三路频率表到数据帧矩阵

时间:2015-07-10 08:08:48

标签: r dataframe

我使用以下方法在 R 中生成行百分比频率表:

df <- as.data.frame(c("Boy","Girl","Boy","Girl"))
colnames(df) <- "SEX"
df$GP <- c("A","A","B","B")
df$freq <- c(1,2,3,4)

tab <- as.data.frame.matrix(prop.table(table(df$GP, df$freq),1))

但是,我想通过变量“SEX”来区分频率。有没有办法在不按性别划分数据框的情况下执行此操作,创建两个数据框,一个用于男孩,另一个用于女孩,然后合并在一起?

无法将三路频率表table(df$GP, df$freq, df$SEX)强制转换为数据帧矩阵。使用excludetable(df$GP, df$freq, df$SEX, exclude="Boy")会导致同样的问题。

有一种有效的方法吗?

1 个答案:

答案 0 :(得分:2)

p_tabl <- prop.table(xtabs(freq~GP+SEX, data=df))
(as.data.frame(p_tabl))