Получить гистограмму графика факторных частот (резюме) - PullRequest
17 голосов
/ 27 апреля 2011

У меня есть фактор с множеством разных значений. Если вы выполните summary(factor), на выходе появится список различных значений и их частоты. Вот так:

A B C D
3 3 1 5

Я хотел бы составить гистограмму значений частоты, т. Е. Ось X содержит различные встречающиеся частоты, а ось Y - количество факторов, имеющих эту конкретную частоту. Какой лучший способ сделать что-то подобное?

edit: благодаря приведенному ниже ответу я понял, что я могу сделать, это вывести коэффициент частоты из таблицы, вывести его в таблицу, а затем отобразить этот график, который будет выглядеть (если f является фактором):

plot(factor(table(f)))

1 Ответ

27 голосов
/ 27 апреля 2011

Обновление в свете уточненного Q

set.seed(1)
dat2 <- data.frame(fac = factor(sample(LETTERS, 100, replace = TRUE)))
hist(table(dat2), xlab = "Frequency of Level Occurrence", main = "")

дает:

histogram of frequency of occurrence in factor

Здесь мы просто применяем hist() непосредственно к результату table(dat). table(dat) предоставляет частоты на уровень фактора, а hist() - гистограмму этих данных.


Оригинал

Есть несколько возможностей. Ваши данные:

dat <- data.frame(fac = rep(LETTERS[1:4], times = c(3,3,1,5)))

Вот три, от первого столбца, сверху вниз:

  • Методы печати по умолчанию для класса "table", данные и гистограммные столбцы
  • Гистограмма - это, вероятно, то, что вы имели в виду под гистограммой. Обратите внимание на низкое соотношение чернил к информации здесь
  • Точечный график или точечный график; показывает ту же информацию, что и на других графиках, но использует гораздо меньше чернил на единицу информации. Предпочтительные.

Код для их производства:

layout(matrix(1:4, ncol = 2))
plot(table(dat), main = "plot method for class \"table\"")
barplot(table(dat), main = "barplot")
tab <- as.numeric(table(dat))
names(tab) <- names(table(dat))
dotchart(tab, main = "dotchart or dotplot")
## or just this
## dotchart(table(dat))
## and ignore the warning
layout(1)

это дает:

one dimensional plots

Если у вас просто есть данные в переменной factor (кстати, выбор неправильного имени), тогда в моих примерах кода можно использовать table(factor) вместо table(dat) или table(dat$fac).

Для полноты, пакет lattice является более гибким, когда речь идет о создании точечного графика, поскольку мы можем получить желаемую ориентацию:

require(lattice)
with(dat, dotplot(fac, horizontal = FALSE))

дает:

Lattice dotplot version

И ggplot2 версия:

require(ggplot2)
p <- ggplot(data.frame(Freq = tab, fac = names(tab)), aes(fac, Freq)) + 
    geom_point()
p

дает:

ggplot2 version

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...