我有这个数据框:
df <- data.frame(make = c("dodge", "dodge", "toyota", "ford", "dodge", "toyota","toyota","ford", "ford", "dodge"),
grn = c( 1, 1, NA, 1, NA, NA, 1, 1, NA, NA),
blu = c( NA, NA, 1, NA, 1, NA, NA, NA, 1, NA),
blk = c( NA, NA, NA, NA, NA, 1, NA, NA, NA, 1))
我正在尝试使用&#34; make&#34;创建一个情节。在x轴和总和&#34; make&#34;计算y轴并使用颜色填充。我想我需要为make和color制作一个计数表,但我不确定如何做到这一点。例如,表格看起来像这样:
DF <- read.table(text = "make grn blu blk
dodge 2 1 1
ford 2 1 0
toyota 1 1 1", header = TRUE)
然后解决方案非常简单
library(reshape2)
library(ggplot2)
DF1 <- melt(DF, id.var="make")
ggplot(DF1, aes(x = make, y = value, fill = variable)) +
geom_bar(stat = "identity")
那么如何转换我的数据框&#34; df&#34;进入&#34; DF&#34;?
答案 0 :(得分:3)
嗯,你不必进行所有这些改造。制作情节的较短方式:
df %>%
gather(key=col, value=num, -make) %>%
na.omit() %>%
ggplot(aes(make, fill=col)) +
geom_bar()
前三行创建输入数据的长格式。然后传递给ggplot
以进行统计变换。
答案 1 :(得分:2)
您可以使用dplyr::summarise_all
:
library(dplyr)
df %>% group_by(make) %>% summarise_all(sum, na.rm=TRUE)
# A tibble: 3 × 4
# make grn blu blk
# <fctr> <dbl> <dbl> <dbl>
#1 dodge 2 1 1
#2 ford 2 1 0
#3 toyota 1 1 1