Share |

суббота, 20 декабря 2014 г.

Как в Boxplot в R, Rstudio избавиться от ненужных факторов

Представьте такую задачу: вам нужно построить boxplot в Rstudio для фактора "а" для набора данных
   q p
1   1 a
2   2 b
3   3 a
4   4 b
5   5 a
6   6 b
7   7 a
8   8 b
9   9 a
10 10 b

Стандартный вариант
boxplot(q ~ p, data = h)
Как в Boxplot в R, Rstudio избавиться от ненужных факторов
Но нам надо избавиться от правого "ящика"
Мы делаем так
j = subset(h, p == "a")
boxplot(q ~ p, data = j)
Как в Boxplot в R, Rstudio избавиться от ненужных факторов
И нас, вероятно, не устроит такой вариант: ось X показывает наличие пустого фактора. Если проверить данные, str(j), то увидим присутствие этого фактора - "b".
В данном конкретном случае можно обойтись простым решением
boxplot(q, data = j)
но чаще мы выделяем не один, а несколько факторов, тогда такое решение не прокатит.
Среди вариантов решения:

  1. переменную перекодировать в тип переменной numeric -  для количественной переменной Rstudio этот глюк исчезает
  2. сохранить subset на компе как txt или csv файл, потом загрузить снова, R воспринимает как новый файл 
  3. посоветуете свой вариант? я подозреваю, что есть более простое решение
  4. либо вопользоваться формулой

boxplot(q ~ droplevels(p), data=subset(h, p %in% c('a'),
                                       drop=TRUE))

Как в Boxplot в R, Rstudio избавиться от ненужных факторов

читаем: The function droplevels is used to drop unused levels from a factor or, more commonly, from factors in a data frame.
надеюсь, было полезно

P.S.

уже после публикации мне подсказали более простое решение
boxplot(q ~ as.character(p), data = subset(h, p == c("a", "b")))
в данном случае мы переменную из категориальной / номинативной перекодируем в текстовую, а данный тип переменных позволяет исключать ненужные значения переменной

Комментариев нет:

Отправить комментарий

рек

Популярные сообщения