我有一些数据的结构与以下相同:
structure(list(respectfromsuperior = structure(c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L,
1L, 1L, 1L, NA, 2L, 1L, 1L, 1L, 1L, 2L), .Label = c("agree",
"disagree"), class = "factor"), respectideserve = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L), .Label = c("agree",
"disagree"), class = "factor"), undesirablechange = structure(c(2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, NA, 2L, 2L,
2L, 2L, 2L, 1L, 1L, NA, 1L, 2L, 1L, 2L, 2L, 2L), .Label = c("agree",
"disagree"), class = "factor"), jobsecuritypoor = structure(c(2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("agree",
"disagree"), class = "factor"), promotionprospectsadequate = structure(c(2L,
1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L,
2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L), .Label = c("agree",
"disagree"), class = "factor"), salaryadequate = structure(c(2L,
1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("agree",
"disagree"), class = "factor"), branch = structure(c(1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Edinburgh",
"Head Office", "Manchester"), class = "factor")), .Names = c("respectfromsuperior",
"respectideserve", "undesirablechange", "jobsecuritypoor", "promotionprospectsadequate",
"salaryadequate", "branch"), class = "data.frame", row.names = c(1L,
2L, 4L, 6L, 10L, 11L, 13L, 15L, 16L, 17L, 19L, 20L, 22L, 23L,
25L, 27L, 29L, 30L, 32L, 33L, 34L, 35L, 39L, 40L, 41L, 42L, 43L,
44L, 45L))
我想使用ggplot 2绘制具有以下功能的条形图:
我尝试过使用下面的代码,但无法解决问题:
data.r <- melt(rewitemsbr, id.vars='branch')
ggplot(data=data.r, aes(x=value, fill=variable)) +
geom_bar(stat="count", position=position_dodge())
这是我提出的最好的:
任何帮助非常感谢谢谢。
答案 0 :(得分:1)
您可以尝试以下操作。
# get the stats using aggregate
res <- aggregate(d[,1:6], list(d$branch), function(x) sum(x=="agree", na.rm = T)/length(x))
res
Group.1 respectfromsuperior respectideserve undesirablechange jobsecuritypoor promotionprospectsadequate salaryadequate
1 Edinburgh 1.0 0.8888889 0.1111111 0.0 0.6666667 0.4444444
2 Head Office 0.7 0.3000000 0.4000000 0.2 0.2000000 0.0000000
3 Manchester 0.8 0.8000000 0.2000000 0.1 0.6000000 0.2000000
# to long format
library(reshape2)
res_long <- melt(res, id.vars='Group.1')
# plot
ggplot(data=res_long, aes(x=Group.1, y=value, fill=variable)) +
geom_bar(stat="identity", position=position_dodge())