ggplot2中的数据预处理

时间:2013-12-08 16:36:12

标签: r csv plot ggplot2

https://dl.dropboxusercontent.com/u/93667882/issue_data.csv这是我在R工作的csv文件,用于绘制堆积条形图。通过在R中进行数据的maunal输入,我能够做到这一点。但我很难对csv文件进行处理,使其适合ggplot2。

我想绘制每个BU,每个国家/地区,每个分区的三个不同的堆叠条形图,其中每个条形将是100%的全部,其余的重要,错误,警告,评论应根据它们的贡献叠加在另一个之上ALL。

注意:全部=严重+错误+警告+审核。

1 个答案:

答案 0 :(得分:1)

首先,您需要修改一些因子级别。这是必要的,因为某些级别包含空格(例如," CT "应与"CT"相同)

dat <- read.csv("issue_data.csv")
dat <- transform(dat, BU = gsub(" ", "", as.character(BU)),
                 Country = gsub(" ", "", as.character(Country)))

以下代码为BU创建了一个图表。沿着BU

的级别汇总不同的变量
agg <- aggregate(cbind(Critical, Error, Warning, Review) ~ BU, dat, sum)
agg[-1] <- agg[-1] / rowSums(agg[-1]) # since you want bars of equal height

您可以使用reshape2包轻松排列数据框:

library(reshape2)
dat2 <- melt(agg, id.vars = c("BU"), 
             measure.vars = c("Critical", "Error", "Warning", "Review"))

现在,可以创建情节。

library(ggplot2)
ggplot(dat2) +
  geom_bar(aes(x = BU, y = value, fill = variable), stat = "identity") 

enter image description here