Сделать частотную гистограмму для переменных факторов

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

Скажем, у меня есть некоторые категориальные данные в моем наборе данных о распространенных типах домашних животных. Я ввожу его как вектор символов в R, который содержит имена разных типов животных. Я создал его вот так:

animals <- c("cat", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "cat", "cat", "bird") 

Я превращаю его в фактор для использования с другими векторами в моем кадре данных:

 animalFactor <- as.factor(animals) 

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

 hist(table(animalFactor), freq=TRUE, xlab = levels(animalFactor), ylab = "Frequencies") 

Результат абсолютно ничего подобного, как я ожидал. Отмечая проблемы в стороне, я не могу понять, как создать простую гистограмму частоты по категориям.

Похоже, вы хотите barplot(prop.table(table(animals))) :

введите описание изображения здесь

Однако это не гистограмма.

Причина, по которой вы получаете неожиданный результат, состоит в том, что hist(...) вычисляет распределение из числового вектора. В вашем коде table(animalFactor) ведет себя как числовой вектор с тремя элементами: 1, 3, 7. Таким образом, hist(...) отображает число 1 (1), число 3 (1) и число из 7 (1). Решение Роланда является самым простым.

Вот как это сделать, используя ggplot :

 library(ggplot2) ggp <- ggplot(data.frame(animals),aes(x=animals)) # counts ggp + geom_histogram(fill="lightgreen") # proportion ggp + geom_histogram(fill="lightblue",aes(y=..count../sum(..count..))) 

Вы получите точно такой же результат, используя animalFactor вместо animals в коде выше.

Если вы хотите сделать это в ggplot , было изменено API на geom_histogram() что приводит к ошибке: https://github.com/hadley/ggplot2/issues/1465

Чтобы обойти это, используйте geom_bar() :

 animals <- c("cat", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "cat", "cat", "bird") library(ggplot2) # counts ggplot(data.frame(animals), aes(x=animals)) + geom_bar() 

введите описание изображения здесь

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

 barplot(summary(df$Country)) 

Данные как фактор могут использоваться как входные данные для функции графика.

Ответ на аналогичный вопрос приведен здесь: https://stat.ethz.ch/pipermail/r-help/2010-December/261873.html

  x=sample(c("Richard", "Minnie", "Albert", "Helen", "Joe", "Kingston"), 50, replace=T) x=as.factor(x) plot(x) 
Давайте будем гением компьютера.