หากคุณต้องการใช้บาร์โค้ดแบบเรียงซ้อนกับรายการจำนวนมากดังกล่าวนี่เป็นวิธีแก้ปัญหาสองวิธี
การใช้ 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))
ฉันได้รับ barchart แบบ 'อ่านได้' คุณสามารถประมวลผลได้ในภายหลัง (สิ่งเหล่านี้เป็น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มีให้เป็นแพ็คเกจแยกต่างหาก
- คุณไม่จำเป็นต้องก่อร่างห้องสมุดหรือถอดออกทั้งirutilsและReshape