我需要将多个网站的认知度量结合到一个条形图中。每个网站的意识由单独的名义变量(是/否)来衡量。我想创建一个每个网站有一个条形图的图表,表明有多少人知道相应的网站。我的第一次尝试是为每个网站创建一个数字为“是”值除以“总行数”的向量。但有69个网站应该有一个更聪明的方式。
以下关于堆栈溢出的解决方案适合我想要做的事情。 How do I plot a number of categorical variables on a graph in R?
但如果可能,我想只显示yes值。此外,我想在一个图形而不是多个图形中的所有内容。
我的数据框架具有以下结构:
gender <- factor(sample(1:2, 5, replace=TRUE), levels = c(1,2,99), labels = c("Male", "Female", "Missing Value"))
age <- sample(18:55, 5, replace=TRUE)
web1 <- factor(sample(1:2, 5, replace=TRUE), levels = c(1,2,99), labels = c("Yes", "No", "Missing Value"))
web2 <- factor(sample(1:2, 5, replace=TRUE), levels = c(1,2,99), labels = c("Yes", "No", "Missing Value"))
web3 <- factor(sample(1:2, 5, replace=TRUE), levels = c(1,2,99), labels = c("Yes", "No", "Missing Value"))
web4 <- factor(sample(1:2, 5, replace=TRUE), levels = c(1,2,99), labels = c("Yes", "No", "Missing Value"))
web5 <- factor(sample(1:2, 5, replace=TRUE), levels = c(1,2,99), labels = c("Yes", "No", "Missing Value"))
df <- data.frame(gender, age, web1, web2, web3, web4, web5)
df
答案 0 :(得分:1)
我们可以使用tidyverse
创建您想要的信息,然后将其绘制成图形。
library(tidyverse)
df2 <- gather(df, "website", "aware", 3:7, factor_key = T) %>%
group_by(website, aware) %>%
summarize(n = n()) %>%
ungroup() %>%
filter(aware == "Yes") %>%
complete(website, fill = list(n = 0))
ggplot(data = df2) +
geom_bar(aes(website, n), stat = "identity")