У мене такий набір даних:
Area Chemical Machinery Other
Abilene TX Yes No Yes
Akron OH Yes No No
Albany GA Yes Yes No
Albuquerque NM No Yes Yes
Alexandria LA Yes No Yes
Мені потрібно використовувати ggplot2 зробити а бар сюжет показуючи кількість "yeses" у кожному стовпці. Таким чином, остаточний смуг буде мати три стовпці по осі Х, значення осі Y - 4 для «Хімічна», 2 для «Машини» та 3 для «Інше».
Ще не новим у ggplot2, а також не впевнений, як чітко знайти підрахунки певного значення (у цьому випадку кількість "yeses") у кожному стовпчику та його графіку. Дякую!
Відповіді:
1 для відповіді № 1Це легше, якщо ви конвертуєте свої дані у широкому форматі (кілька стовпців) у довгий формат (менше стовпців, більше рядків)
library(tidyr)
library(dplyr)
yes <- df %>%
select(-Area) %>%
gather() %>%
group_by(key) %>%
summarise(value = sum(value=="Yes"))
# A tibble: 3 x 2
# key value
# <chr> <int>
# 1 Chemical 4
# 2 Machinery 2
# 3 Other 3
library(ggplot2)
ggplot(yes, aes(x=key, y=value)) +
geom_bar(stat="identity")
Як вказує @steveb, можна трохи покращити, використовуючи stat_count
df %>%
select(-Area) %>%
gather() %>%
filter(value == "Yes") %>%
ggplot(aes(key, ..count..)) + geom_bar()
0 для відповіді № 2
Base-R короткий шлях, щоб дістатися до вашого графіка, використовуючи colSums
:
n_yes <- data.frame(type = names(df[, -1]),
total_yes = colSums(df[, -1] == "Yes"))
ggplot(n_yes, aes(x = type, y = total_yes)) +
geom_bar(stat = "identity")