任何人都可以帮助我创建这样的表格(多层)?

我在 R 中尝试了许多不同的功能,例如 table、tapply、aggregate 等。
我可以制作值的部分,但不知道如何添加列和行名称的部分(灰色部分)..

假设有四个变量:性别、年级、年份、地区。
使用 4 个阶乘输入变量,我想用 R 和 Shiny 创建这种形式的表。
表中的值只是计数。

任何帮助将不胜感激。

r - 如何用R和 Shiny 制作多层表格?-LMLPHP

最佳答案

我认为 ftable() 函数就是你要找的:

d <- data.frame(Year=sample(c("2007", "2014"), 775, replace=TRUE),
     Gender=sample(c("Mail", "Femail"), 775, replace=TRUE),
     Grade=sample(c("1st grad", "2nd grad", "3rd grad"), 775, replace=TRUE),
     Area=sample(c("City area", "Rural area"), 775, replace=TRUE),
     Income=1000*runif(775))

d1 <- ftable(d, row.vars=c("Year", "Area"), col.vars=c("Gender", "Grade"))
d1

#                 Gender   Femail                       Mail
#                 Grade  1st grad 2nd grad 3rd grad 1st grad 2nd grad 3rd grad
# Year Area
# 2007 City area               27       32       37       37       30       37
#      Rural area              29       26       25       41       36       30
# 2014 City area               30       29       30       27       32       29
#      Rural area              35       36       42       31       35       32

如果要显示表中每个组的平均收入,有多种选择。一种方法是使用 plyrreshape2 包中的函数组合。可能有更好或更有效的方法,但这可以解决问题:
library(plyr)
d1 <- ddply(d, .(Year, Gender, Grade, Area), summarise,
      mean=mean(Income))

library(reshape2)
dcast(d1, Year+Area ~ Gender+Grade)

关于r - 如何用R和 Shiny 制作多层表格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33803173/

10-12 17:05