Создать гистограмму значений в фрейме данных в R - PullRequest
0 голосов
/ 04 марта 2020

Предположим, у меня есть следующий фрейм данных

set.seed(85)
a <- data.frame(replicate(10,sample(0:3,5,rep=TRUE)))

И я хочу создать гистограмму значений в фрейме данных (т.е. показывает, сколько всего 0, 1, 2 и 3).

Однако

hist(a)

дает мне ошибку 'x' must be numeric, но as.numeric(a) дает мне ошибку (list) object can not be coerced to type 'double'

Как сделать гистограмму значений в датафрейм? Также предпочтительно, чтобы он игнорировал значения N / A.

Любая помощь приветствуется.

Ответы [ 2 ]

4 голосов
/ 04 марта 2020

Чтобы отобразить "сколько всего 0, 1, 2 и 3" - это график количества этих значений. Поэтому соответствующий тип графика - это барплот , а не гистограмма.

barplot(table(unlist(a)))

enter image description here

Если данные изменились на чтобы все элементы a были равны одному из значений, в данном случае "2", были бы заменены на NA, решение могло бы заключаться в том, чтобы принудительно установить факторные уровни вручную.

a[a == "2"] <- NA
a2 <- unlist(a)
a2 <- factor(a2, levels = min(a2, na.rm = TRUE):max(a2, na.rm = TRUE))
barplot(table(a2))

enter image description here

ggplot2

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

library(ggplot2)

ggplot(stack(a), aes(x = values)) + 
  geom_bar()

enter image description here

0 голосов
/ 04 марта 2020

Гистограммы и, следовательно, geom_histogram в ggplot2, предназначены для непрерывных данных. Вам нужен барплот для визуализации дискретных данных. В дополнение к barplot в графике, вы можете использовать geom_bar в ggplot2. Синтаксис ggplot2:

library(ggplot2)
set.seed(85)
a <- data.frame(replicate(10,sample(0:3,5,rep=TRUE)))
ggplot(stack(a)) + geom_bar(aes(x=values))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...