クロス集計表の縦横%をRでスマートに計算する方法はどんなのがあるでしょうか。
以下のようなのを書いたのですが,かなり不細工
percentage <- function(a, row.percent=TRUE)
{
if (row.percent == FALSE) {
a <- t(a)
}
total <- apply(a, 1, sum)
ans <- round(a/total*1000)/10
a <- cbind(a, total)
total <- apply(a, 2, sum)
a <- rbind(a, total)
if (row.percent == FALSE) {
a <- t(a)
ans<- t(ans)
}
list(a=a, ans=ans)
}
a <- matrix(c(3, 0, 3, 9, 12, 11, 22, 20, 11, 9, 14, 4), byrow=TRUE, nc=3)
percentage(a, row.percent=TRUE)
percentage(a, row.percent=FALSE)