我使用以下方法在 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)
强制转换为数据帧矩阵。使用exclude
等table(df$GP, df$freq, df$SEX, exclude="Boy")
会导致同样的问题。
有一种有效的方法吗?
答案 0 :(得分:2)
p_tabl <- prop.table(xtabs(freq~GP+SEX, data=df))
(as.data.frame(p_tabl))