У меня возникли проблемы с созданием таблицы с plyr
, и я надеюсь, что вы сможете помочь. Если вы запустите код ниже, вы должны получить таблицу с пропорциями на самом высоком уровне совокупности моих данных (т. Е. Весь набор данных). Тем не менее, я хотел бы получить ту же таблицу с пропорциями по каждому предмету для каждой школы. Спасибо за любую помощь. Кроме того, если есть лучший способ синтезировать это с помощью только dplyr
, я открыт для него. Я пытаюсь интегрировать некоторые из этих новых пакетов в свой рабочий процесс.Создание вложенной таблицы с ddply
# 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)
Попробуйте 'prop.table (с (g, table (response, Item, School)), margin = 2)', который дает массив 4x10x20 (ответы, предметы, школы). Вы можете использовать 'as.data.fame' в результате для преобразования, если это необходимо. – lukeA
@ lukeA: Большое спасибо. Это приближает меня к тому, что мне нужно. Я передумал это дезорганизованным образом. – bfoste01
R все время подавляющее - имеет свои плюсы и минусы. ;) Я отправлю его в качестве ответа. Проверьте это, если хотите, или подождите других ответов. – lukeA