2011-02-01 3 views
3

R은 패널 순서를 xyplot()으로 알파벳 순서 (문자열의 경우) 또는 수준 순서 (요인의 경우)로 결정합니다. 알파벳순이 아닌 연대순으로 표시하고자하는 텍스트로 날짜가 있습니다.xyplot()에서 패널 순서를 제어하려면 어떻게해야합니까?

xyplot(y ~ x | date, data = df) 

을하지만이 순서에서 날짜를 박았 :

x <- sample(1:10, 10, replace = TRUE) 
y <- sample(1:10, 10, replace = TRUE) 
# overlapping 2010 and 2011 
date <- rep(as.Date("2010-01-01") + sort(sample(200:400, 5)), each = 2) 
striptext <- format(date, "%d-%b ...") 
df <- data.frame(x, y, date, striptext) 

이 잘 작동

xyplot(y ~ x | striptext, data = df) 

내가 스트립의 전체 날짜를 싶지 않아,하지만 난 싶어 올바른 순서로. 주문한 요인으로 striptext을 만드는 것 외에 어떤 해결책이 있습니까?

+1

주를 요점은 당신이 누락 된 것 같아요'striptext'는'xyplot' 안의 요인으로 강요 당하고'levels'가 제공되지 않으면 결과 인자의 수준은 알파 순서입니다. 'levels (factor (striptext))'와'levels (factor (striptext, levels = unique (striptext))')를 고려하십시오. 귀하의 질문에 대한 진정한 대답은 귀하가 원하는 방식으로 주문 된 수준의 요소로서 먼저 귀하의 조절 변수를 설정하는 것입니다. –

답변

4

명시 적으로 striptext의 수준을 설정하고 그 격자 (수준이 알파 위해 끝입니다) 당신을위한 강제 할 필요가 없도록 요소로 저장 :

set.seed(1) 
x <- sample(1:10, 10, replace = TRUE) 
y <- sample(1:10, 10, replace = TRUE) 
# overlapping 2010 and 2011 
date <- rep(as.Date("2010-01-01") + sort(sample(200:400, 5)), each = 2) 
striptext <- format(date, "%d-%b ...") 
## set the levels explicitly 
df <- data.frame(x, y, date, 
       striptext = factor(striptext, levels = unique(striptext))) 
xyplot(y ~ x | striptext, data = df) 
+0

그게 전부 야. 기본적으로'factor'는 레벨을 정렬하지만,'unique'는 레벨을 찾은 순서대로 남겨 둡니다. –

관련 문제