이렇게 많은 수의 항목이있는 누적 막 대형 차트를 실제로 사용하려는 경우 가능한 두 가지 솔루션이 있습니다.
사용 irutils
몇 달 전에이 패키지를 보았습니다.
Github 의 커밋 0573195c07 현재 코드는 grouping=
인수 와 함께 작동하지 않습니다 . 금요일의 디버깅 세션으로 갑시다.
Github에서 압축 버전을 다운로드하여 시작하십시오. R/likert.R
파일, 특히 likert
및 plot.likert
기능 을 해킹해야 합니다. 먼저,에 likert
, cast()
사용되지만 reshape
(이 생길 비록 패키지는로드되지 않습니다 import(reshape)
에서 명령 NAMESPACE
파일). 미리로드 할 수 있습니다. A는 어디에 둘째, 항목 레이블을 가져 오기 위해 잘못된 명령 거기 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 에주의를 기울이고 싶습니다 . 위 코드를 아래와 같이 재사용 할 수 있습니다.
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 수정
- 현재 asrt 는 별도의 패키지로 제공됩니다.
- 라이브러리를 재구성 하거나 irutils 와 재구성을 분리 할 필요가 없습니다.