我无法使用plyr
生成表格,我希望您能提供帮助。如果您运行下面的代码,您应该获得一个表格,其中比例为我数据的最高聚合级别(即整个数据集)。但是,我希望每个学校的每个项目的比例都能得到相同的表格。谢谢你的帮助。另外,如果有一个更好的方法来合成这个,只需dplyr
我就可以了。我试图将其中一些新软件包集成到我的工作流程中。
# load packages
library(plyr)
library(dplyr)
library(reshape2)
library(tidyr)
library(xtable)
# generate fake Data
set.seed(500)
School <- rep(seq(1:20), 2)
District <- rep(c(rep("East", 10), rep("West", 10)), 2)
Score <- rnorm(40, 100, 15)
Student.ID <- sample(1:1000,8,replace=T)
items <- data.frame(replicate(10, sample(1:4, 40, replace=TRUE)))
items <- data.frame(lapply(items, factor, ordered=TRUE,
levels=1:4,
labels=c("Strongly disagree","Disagree",
"Agree","Strongly Agree")))
school.data <- data.frame(Student.ID, School, District, Score, items)
rm(items)
# code for table
items <- select(school.data, School, X1:X10)
g <- items %>%
gather(Item, response, -School)
# This gives me the aggregate results for the entire data set
foo <- ddply(g, .(Item), function(x) prop.table(table(x$response))) #I stupidly tried .(Item, School) to no avail
xtable(foo)
答案 0 :(得分:1)
尝试
prop.table(with(g, table(response, Item, School)), margin = 2)
这给出了一个4x10x20阵列(响应,项目,学校)。如果需要,您可以在结果上使用as.data.fame
进行转换。