如何分组数据,然后在ggplot2中绘制条形图 [英] How to group data and then draw bar chart in ggplot2
问题描述
我有3栏的数据框(df),例如:
pre $ NUMERIC1:NUMERIC2:GROUP(CHARACTER):
100 1 A
200 2 B
300 3 C
400 4 A
我想按GROUP(CHARACTER)对NUMERIC1进行分组,然后计算每个组的平均值。
类似于此:
mean(NUMERIC1):GROUP(字符):
250 A
200 b
300 c
最后我想用ggplot2绘制条形图在x轴上具有GROUP(字符)a = nd在y轴上的平均(NUMERIC)。
它应该是这样的:
我用过
均值< - tapply(df $ NUMERIC1,df $ GROUP(CHARACTER),FUN =平均值)
但我不确定是否可以,即使是这样,我也不知道我下一步应该做什么
c $ c> res < - aggregate(NUMERIC1〜GROUP,data = df,FUN = mean)
ggplot(res,aes(x = GROUP,y = NUMERIC1))+ geom_bar(stat =identity)
data
df < - 结构(列表(NUMERIC1 = c(100L,200L,300L,400L),NUMERIC2 = 1:4,
GROUP =结构(c(1L,2L,3L,1L),。标签= c(A ,B,
C),class =factor)),.Names = c(NU MERIC1,NUMERIC2,
GROUP),class =data.frame,row.names = c(NA,-4L))
I have data frame (df) with 3 columns e.g.
NUMERIC1: NUMERIC2: GROUP(CHARACTER):
100 1 A
200 2 B
300 3 C
400 4 A
I want to group NUMERIC1 by GROUP(CHARACTER), and then calculate mean for each group. Something like that:
mean(NUMERIC1): GROUP(CHARACTER):
250 A
200 B
300 C
Finally I'd like to draw bar chart using ggplot2 having GROUP(CHARACTER) on x axis a =nd mean(NUMERIC) on y axis. It should look like:
I used
mean <- tapply(df$NUMERIC1, df$GROUP(CHARACTER), FUN=mean)
but I'm not sure if it's ok, and even if it's, I don't know what I supposed to do next.
Try something like:
res <- aggregate(NUMERIC1 ~ GROUP, data = df, FUN = mean)
ggplot(res, aes(x = GROUP, y = NUMERIC1)) + geom_bar(stat = "identity")
data
df <- structure(list(NUMERIC1 = c(100L, 200L, 300L, 400L), NUMERIC2 = 1:4,
GROUP = structure(c(1L, 2L, 3L, 1L), .Label = c("A", "B",
"C"), class = "factor")), .Names = c("NUMERIC1", "NUMERIC2",
"GROUP"), class = "data.frame", row.names = c(NA, -4L))
这篇关于如何分组数据,然后在ggplot2中绘制条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!