Переупорядочить коробку и усы в R - PullRequest
1 голос
/ 22 октября 2011

У меня есть следующий минимальный пример кода в R:

data.time = c(1, 4, 8, 9, 2, 4, 1)  
data.difficulty = c("hard", "simple", "simple", "hard", "simple", "simple", "hard")  
library(lattice)  
bwplot(data.time ~ data.difficulty, xlab="Difficulty", ylab="Time")  

Если вы построите график, вы увидите, что «hard» слева, а «simple» справа. Я хочу, чтобы это изменилось. Есть ли способ сделать это без преобразования или изменения моих исходных данных? Я не хочу его менять, потому что данные используются позже для других графиков и анализа.

Спасибо

Ответы [ 3 ]

2 голосов
/ 22 октября 2011

Вы можете использовать функцию relevel, чтобы сделать ссылку "простой". Сначала мне пришлось преобразовать data.difficulty в factor, потому что это символ.

data.difficulty<-relevel(as.factor(data.difficulty), ref="simple")
bwplot(data.time ~ data.difficulty, xlab="Difficulty", ylab="Time") 
1 голос
/ 22 октября 2011

Следуя другим ответам: это немного нарушает ваши правила, организовывая данные в виде фрейма данных (так что мы можем transform это на лету для bwplot), но если вы можете выдержать, это, вероятно,лучший способ организовать анализ в целом ... многие вещи в R (например, прогнозирование модели) становятся проще, когда переменные из одного и того же набора упаковываются в кадры данных, а не лежат как отдельные объекты в рабочей области.Остальные ваши команды тоже легче читать, если вы правильно используете data= аргументы.

data.time = c(1, 4, 8, 9, 2, 4, 1)  
data.difficulty = c("hard", "simple", "simple", "hard", 
                  "simple", "simple", "hard")  
mydata <- data.frame(time=data.time,difficulty=data.difficulty)
library(lattice)  
bwplot(time ~ difficulty, xlab="Difficulty", ylab="Time",
   data = transform(mydata,
       difficulty=relevel(difficulty,"simple")))
1 голос
/ 22 октября 2011

Я не знаю, если преобразование вектора сложности в фактор нарушает ваше ограничение не изменять данные.Любая другая функция, скорее всего, будет обрабатывать это на той же основе, что и исходный символьный вектор.

dfrm <- data.frame(time=data.time, difficulty=data.difficulty) 
 dfrm$difficulty <- factor(dfrm$difficulty, levels=c("simple", "hard") )
 bwplot(time ~ difficulty, data=dfrm, xlab="Difficulty", ylab="Time")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...