Представьте такую задачу: вам нужно построить 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)
Но нам надо избавиться от правого "ящика"
Мы делаем так
j = subset(h, p == "a")
boxplot(q ~ p, data = j)
И нас, вероятно, не устроит такой вариант: ось X показывает наличие пустого фактора. Если проверить данные, str(j), то увидим присутствие этого фактора - "b".
В данном конкретном случае можно обойтись простым решением
boxplot(q, data = j)
но чаще мы выделяем не один, а несколько факторов, тогда такое решение не прокатит.
Среди вариантов решения:
boxplot(q ~ droplevels(p), data=subset(h, p %in% c('a'),
drop=TRUE))
читаем: The function droplevels is used to drop unused levels from a factor or, more commonly, from factors in a data frame.
надеюсь, было полезно
boxplot(q ~ as.character(p), data = subset(h, p == c("a", "b")))
в данном случае мы переменную из категориальной / номинативной перекодируем в текстовую, а данный тип переменных позволяет исключать ненужные значения переменной
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)
Но нам надо избавиться от правого "ящика"
Мы делаем так
j = subset(h, p == "a")
boxplot(q ~ p, data = j)
И нас, вероятно, не устроит такой вариант: ось X показывает наличие пустого фактора. Если проверить данные, str(j), то увидим присутствие этого фактора - "b".
В данном конкретном случае можно обойтись простым решением
boxplot(q, data = j)
но чаще мы выделяем не один, а несколько факторов, тогда такое решение не прокатит.
Среди вариантов решения:
- переменную перекодировать в тип переменной numeric - для количественной переменной Rstudio этот глюк исчезает
- сохранить subset на компе как txt или csv файл, потом загрузить снова, R воспринимает как новый файл
- посоветуете свой вариант? я подозреваю, что есть более простое решение
- либо вопользоваться формулой
boxplot(q ~ droplevels(p), data=subset(h, p %in% c('a'),
drop=TRUE))
читаем: 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")))
в данном случае мы переменную из категориальной / номинативной перекодируем в текстовую, а данный тип переменных позволяет исключать ненужные значения переменной
Комментариев нет:
Отправить комментарий