Якщо ви дійсно хочете використовувати складені барчарти з такою великою кількістю предметів, ось два можливих рішення.
Використання irutils
Я натрапив на цей пакет кілька місяців тому.
За станом на комісію 0573195c07 на Github , код не працюватиме з grouping=
аргументом. Перейдемо до налагоджувальної сесії п’ятниці
Почніть із завантаження поштової версії з Github. Вам потрібно буде зламати R/likert.R
файл, зокрема likert
і plot.likert
функції. По- перше, в likert
, cast()
використовується , але reshape
пакет ніколи не буде завантажений (хоча є більш import(reshape)
інструкції в NAMESPACE
файлі). Ви можете заздалегідь завантажити це самостійно. По- друге, є неправильна інструкція для отримання елементів етикетки, де i
бовтається навколо лінії 175. Це повинен бути закріплений , а також, наприклад , шляхом заміни всіх входжень likert$items[,i]
з likert$items[,1]
. Тоді ви можете встановити пакет так, як ви звикли робити на своїй машині. На моєму Mac я це зробив
% tar -czf irutils.tar.gz jbryer-irutils-0573195
% R CMD INSTALL irutils.tar.gz
Потім за допомогою R спробуйте наступне:
library(irutils)
library(reshape)
# Simulate some data (82 respondents x 66 items)
resp <- data.frame(replicate(66, sample(1:5, 82, replace=TRUE)))
resp <- data.frame(lapply(resp, factor, ordered=TRUE,
levels=1:5,
labels=c("Strongly disagree","Disagree",
"Neutral","Agree","Strongly Agree")))
grp <- gl(2, 82/2, labels=LETTERS[1:2]) # say equal group size for simplicity
# Summarize responses by group
resp.likert <- likert(resp, grouping=grp)
Це має просто працювати, але візуальне відображення буде жахливим через велику кількість елементів. plot(likert(resp))
Однак це працює без групування (наприклад, ).
Таким чином, я б запропонував зменшити ваш набір даних до менших підмножин елементів. Наприклад, використовуючи 12 предметів,
plot(likert(resp[,1:12], grouping=grp))
У мене виходить «читабельний» складений діаграми. Ви, ймовірно, можете їх потім обробити. (Це ggplot2
об’єкти, але ви не зможете впорядкувати їх на одній сторінці gridExtra::grid.arrange()
через проблему з читабельністю!)
Альтернативне рішення
Я хотів би звернути вашу увагу на інший пакет, HH , який дозволяє побудувати ваги Likert як розбіжні складені барчарти. Ми можемо використати вищевказаний код, як показано нижче:
resp.likert <- likert(resp)
detach(package:irutils)
library(HH)
plot.likert(resp.likert$results[,-6]*82/100, main="")
але це трохи ускладнить справи, тому що нам потрібно перетворити частоти в підрахунки, підмножити likert
об'єкт, вироблений irutils
, від'єднати пакет тощо. Отже, почнемо ще раз із нової статистики:
plot.likert(t(apply(resp, 2, table)), main="", as.percent=TRUE,
rightAxisLabels=NULL, rightAxis=NULL, ylab.right="",
positive.order=TRUE)
Щоб використовувати змінну групування, вам потрібно буде працювати з array
числовими значеннями.
# compute responses frequencies separately by grp
resp.array <- array(NA, dim=c(66, 5, 2))
resp.array[,,1] <- t(apply(subset(resp, grp=="A"), 2, table))
resp.array[,,2] <- t(apply(subset(resp, grp=="B"), 2, table))
dimnames(resp.array) <- list(NULL, NULL, group=levels(grp))
plot.likert(resp.array, layout=c(2,1), main="")
Це дозволить отримати дві окремі панелі, але вона поміститься на одній сторінці.
Редагувати 2016-6-3
- На сьогоднішній день likert доступний як окремий пакет.
- Вам не потрібна бібліотека переформатування або від'єднання обох ірутилів та переформатування