绘制按因素分组的数据框中每一列的 Average/Median
Plotting Average/Median of each column in data frame grouped by factors
我正在尝试制作分组条形图,但 运行 遇到了麻烦。例如,如果我使用的是 mtcars 数据集并且我想按 'vs' 列(col #8)对所有内容进行分组,找到所有剩余列的平均值,然后按组绘制它们。
下面是我正在尝试做的一个非常糟糕的例子,我知道它是不正确的。
理想情况下,vs=1 和 vs=0 的 mpg 将并排放置,然后是 cyl 的意思并排放置,等等。我不在乎是否为 dyplr 跳过了聚合,或者是否使用了 ggplot 甚至如果不需要聚合步骤......只是在寻找一种方法来做到这一点,因为它让我发疯。
df = mtcars
agg = aggregate(df[,-8], by=list(df$vs), FUN=mean)
agg
barplot(t(agg), beside=TRUE, col=df$vs))
尝试
library(ggplot2)
library(dplyr)
library(tidyr)
df %>%
group_by(vs=factor(vs)) %>%
summarise_each(funs(mean)) %>%
gather(Var, Val, -vs) %>%
ggplot(., aes(x=Var, y=Val, fill=vs))+
geom_bar(stat='identity', position='dodge')
或使用base R
m1 <- as.matrix(agg[-1])
row.names(m1) <- agg[,1]
barplot(m1, beside=TRUE, col=c('red', 'blue'), legend=row.names(m1))
我正在尝试制作分组条形图,但 运行 遇到了麻烦。例如,如果我使用的是 mtcars 数据集并且我想按 'vs' 列(col #8)对所有内容进行分组,找到所有剩余列的平均值,然后按组绘制它们。
下面是我正在尝试做的一个非常糟糕的例子,我知道它是不正确的。
理想情况下,vs=1 和 vs=0 的 mpg 将并排放置,然后是 cyl 的意思并排放置,等等。我不在乎是否为 dyplr 跳过了聚合,或者是否使用了 ggplot 甚至如果不需要聚合步骤......只是在寻找一种方法来做到这一点,因为它让我发疯。
df = mtcars
agg = aggregate(df[,-8], by=list(df$vs), FUN=mean)
agg
barplot(t(agg), beside=TRUE, col=df$vs))
尝试
library(ggplot2)
library(dplyr)
library(tidyr)
df %>%
group_by(vs=factor(vs)) %>%
summarise_each(funs(mean)) %>%
gather(Var, Val, -vs) %>%
ggplot(., aes(x=Var, y=Val, fill=vs))+
geom_bar(stat='identity', position='dodge')
或使用base R
m1 <- as.matrix(agg[-1])
row.names(m1) <- agg[,1]
barplot(m1, beside=TRUE, col=c('red', 'blue'), legend=row.names(m1))