任何人都可以帮我创建这样的表(多层)?
我在 R 中尝试了很多不同的功能,例如table,tapply,aggregate等。 我可以制作值的部分,但不知道如何添加列和行名称的部分(灰色部分)..
假设有四个变量:性别,年级,年份,面积。 使用4个阶乘输入变量,我想创建这种形式的表格,其中 R 和闪亮。 表中的值只是计数。
任何帮助将不胜感激。
答案 0 :(得分:1)
我认为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
如果要显示表格中每个组的平均收入,有许多选项。一种方法是使用plyr
和reshape2
包中的函数组合。可能有更好或更有效的方法,但这可以解决问题:
library(plyr)
d1 <- ddply(d, .(Year, Gender, Grade, Area), summarise,
mean=mean(Income))
library(reshape2)
dcast(d1, Year+Area ~ Gender+Grade)