Jika Anda benar-benar ingin menggunakan barchart bertumpuk dengan sejumlah besar item, berikut adalah dua solusi yang mungkin.
Menggunakan irutils
Saya menemukan paket ini beberapa bulan yang lalu.
Pada komit 0573195c07 di Github , kode tidak akan berfungsi dengan grouping=
argumen. Mari kita pergi untuk sesi debugging hari Jumat.
Mulailah dengan mengunduh versi zip dari Github. Anda harus meretas R/likert.R
file, khususnya likert
dan plot.likert
fungsinya. Pertama, in likert
, cast()
digunakan tetapi reshape
paket tidak pernah dimuat (meskipun ada import(reshape)
instruksi dalam NAMESPACE
file). Anda dapat memuat ini sendiri sebelumnya. Kedua, ada instruksi yang salah untuk mengambil label item, di mana a i
tergantung di sekitar baris 175. Ini harus diperbaiki juga, misalnya dengan mengganti semua kemunculan likert$items[,i]
dengan likert$items[,1]
. Kemudian Anda dapat menginstal paket seperti yang biasa Anda lakukan pada mesin Anda. Di Mac saya, saya lakukan
% tar -czf irutils.tar.gz jbryer-irutils-0573195
% R CMD INSTALL irutils.tar.gz
Kemudian, dengan R, coba yang berikut ini:
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)
Itu seharusnya bekerja, tetapi rendering visual akan mengerikan karena jumlah item yang tinggi. Ini bekerja tanpa pengelompokan (misalnya, plot(likert(resp))
).
Karena itu saya menyarankan untuk mengurangi dataset Anda menjadi subset item yang lebih kecil. Misalnya, menggunakan 12 item,
plot(likert(resp[,1:12], grouping=grp))
Saya mendapatkan barchart bertumpuk yang 'dapat dibaca'. Anda mungkin dapat memprosesnya setelah itu. (Itu adalah ggplot2
objek, tetapi Anda tidak akan dapat mengaturnya pada satu halaman dengan gridExtra::grid.arrange()
karena masalah keterbacaan!)
Solusi alternatif
Saya ingin menarik perhatian Anda pada paket lain, HH , yang memungkinkan untuk memplot skala Likert sebagai divergen barchart bertumpuk. Kita dapat menggunakan kembali kode di atas seperti yang ditunjukkan di bawah ini:
resp.likert <- likert(resp)
detach(package:irutils)
library(HH)
plot.likert(resp.likert$results[,-6]*82/100, main="")
tetapi hal itu akan sedikit mempersulit karena kita perlu mengonversi frekuensi menjadi jumlah, mengelompokkan likert
objek yang dihasilkan oleh irutils
, melepaskan paket, dll. Jadi mari kita mulai lagi dengan statistik (hitungan) yang baru:
plot.likert(t(apply(resp, 2, table)), main="", as.percent=TRUE,
rightAxisLabels=NULL, rightAxis=NULL, ylab.right="",
positive.order=TRUE)
Untuk menggunakan variabel pengelompokan, Anda harus bekerja dengan array
nilai numerik.
# 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="")
Ini akan menghasilkan dua panel terpisah, tetapi cocok pada satu halaman.
Edit 2016-6-3
- Sampai sekarang likert tersedia sebagai paket terpisah.
- Anda tidak perlu membentuk kembali perpustakaan atau melepaskan kedua irutils dan membentuk kembali