如何在R中创建嵌套表?

时间:2011-11-30 11:49:43

标签: r package

我知道有一种方法可以轻松地使用一个包...我在几个月前找到了包然后做了。但是,我当时没有记下链接,现在我再也找不到解决方案了!

我的问题是:如何在 R 中创建嵌套表格?例如,我有一个个人数据表。每一排都是不同的人。每列包含一个变量,如年龄,性别,身高等。

我知道使用table命令我可以这样做:table(data $ gender,data $ ageCategory)。

这会产生一个带有计数的2 x 2表。

但是,我想制作一个嵌套表,类似于这里的表(忽略最后一列的总数):http://psycnet.apa.org/journals/ror/32/2/images/ror_32_2_199_tbl1a.gif

即,我想创建一个以性别为列的表,然后将行作为年龄类别,并在每行中添加具有高度类别的其他行。

我找到了一个能够轻松完成此任务的软件包,现在我再也找不到它了!

感谢任何可以提供帮助的人。这是一个有点愚蠢的问题,但我想我可能会有更多运气。也许“嵌套表”并不是真正的名称。

2 个答案:

答案 0 :(得分:3)

示例数据集(在您的问题中始终是个好主意):

dat = data.frame(value = runif(100),
                 age = round(runif(100, min = 9, max = 11)) , 
                 gender = sample(c("Male", "Female"), 100, replace = TRUE), 
                 school = sample(c("Public", "Private"), 100, replace = TRUE))

现在要根据您发布的示例表生成一些有用的东西:

library(plyr)
tab = count(dat, c("age", "gender", "school"))
# The contents of tab:
#    age gender  school freq
# 1    9 Female Private    6
# 2    9 Female  Public    6
# 3    9   Male Private    7
# 4    9   Male  Public    8
# 5   10 Female Private   11
# 6   10 Female  Public   13
# 7   10   Male Private   10
# 8   10   Male  Public   14
# 9   11 Female Private    3
# 10  11 Female  Public   11
# 11  11   Male Private    3
# 12  11   Male  Public    8

要生成乳胶表,请查看xtable包。对于Word等,最简单的方法是对count的输出执行一些手动操作。

答案 1 :(得分:2)

您可以将两个以上的变量传递到table,以便更多地分析数据集的计数。这是对table帮助页面的示例的修改。

counts <- with(airquality, table(
  OzCategory = cut(airquality$Ozone, seq(0, 180, 20)),
  Month,
  TempHi = Temp > 75
))
print(counts, zero.print = ".")