Gerçekten çok sayıda öğeyle yığılmış barchar kullanmak istiyorsanız, işte iki olası çözüm.
kullanma irutils
Birkaç ay önce bu pakete rastladım.
İtibariyle üzerinde 0573195c07 taahhüt Github , kod çalışmaz grouping=
argüman. Cuma günkü hata ayıklama oturumuna geçelim.
Github'dan sıkıştırılmış bir sürümü indirerek başlayın. R/likert.R
Dosyayı, özellikle likert
ve plot.likert
işlevlerini hacklemeniz gerekir . İlk olarak, içinde likert
, cast()
kullanılan ancak reshape
(bir yöntemi olmamasına rağmen paket yüklü asla import(reshape)
içinde talimat NAMESPACE
dosyası). Bunu önceden kendiniz yükleyebilirsiniz. İkincisi, i
175. satırın etrafında sarkan bir öğe etiketi getirmek için yanlış bir talimat likert$items[,i]
var likert$items[,1]
. Ardından, paketi makinenize alıştığınız şekilde yükleyebilirsiniz. Mac bilgisayarımda yaptım
% tar -czf irutils.tar.gz jbryer-irutils-0573195
% R CMD INSTALL irutils.tar.gz
Ardından, R ile aşağıdakileri deneyin:
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)
Bu sadece işe yaramalı, ancak görsel render çok sayıda öğe nedeniyle korkunç olacak. Yine de gruplama olmadan çalışır (örn plot(likert(resp))
.).
Bu nedenle, veri kümenizi daha küçük öğelerin alt kümelerine indirmenizi öneririm. Örneğin, 12 öğe kullanarak,
plot(likert(resp[,1:12], grouping=grp))
'Okunabilir' yığılmış bir barchart alıyorum. Muhtemelen daha sonra bunları işleyebilirsiniz. (Bunlar ggplot2
nesnelerdir, ancak gridExtra::grid.arrange()
okunabilirlik sorunu nedeniyle bunları tek bir sayfada düzenleyemezsiniz !)
Alternatif çözüm
Dikkatinizi, Likert ölçeklerini farklı yığın yığınları olarak çizmenize izin veren başka bir paket olan HH'ye çekmek istiyorum . Yukarıdaki kodu aşağıda gösterildiği gibi tekrar kullanabiliriz:
resp.likert <- likert(resp)
detach(package:irutils)
library(HH)
plot.likert(resp.likert$results[,-6]*82/100, main="")
ancak bu, işleri biraz zorlaştıracaktır, çünkü frekansları sayımlara dönüştürmemiz, likert
ürettiği nesneyi alt kümeye irutils
koymamız, paketi ayırmamız vb.
plot.likert(t(apply(resp, 2, table)), main="", as.percent=TRUE,
rightAxisLabels=NULL, rightAxis=NULL, ylab.right="",
positive.order=TRUE)
Bir gruplandırma değişkeni kullanmak için array
sayısal değerlerden biriyle çalışmanız gerekir .
# 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="")
Bu, iki ayrı panel üretecektir, ancak tek bir sayfaya sığar.
Düzenle 2016-6-3
- Şu an itibariyle likert ayrı paket olarak mevcuttur.
- Sen gerek yok yeniden şekillendirmek kütüphane ya da her ikisi ayırmak irutils ve yeniden biçimlendirme