基于R中的几个列进行图形化

时间:2013-07-17 01:35:38

标签: r data-structures graphing

我有一个数据结构,我需要通过一列中的变量和另一列中的变量来绘制二元组。例如,假设我有一个调查,一栏是关于学生对“强烈同意”,“同意”,“中立”,“不同意”和“非常不同意”作为选项的课程的看法。在另一栏中,我有参加调查的人的成绩水平。我如何整理和绘制这些数据,以便我可以显示一个年级中有多少人表示“非常同意”,一个年级中有多少人对所有成绩说“同意”等等?

示例数据:

set.seed(123)
feelops <- c("strongly agree", "agree", "neutral", "disagree", "strongly disagree")
feelops <- ordered(feelops,levels=feelops)
dat <- data.frame(feel=sample(feelops,100,replace=TRUE) , grade=sample(LETTERS[1:5],100,replace=TRUE))

> head(dat)
               feel grade
1             agree     C
2          disagree     B
3           neutral     C
4 strongly disagree     E
5 strongly disagree     C
6    strongly agree     E

2 个答案:

答案 0 :(得分:1)

使用barplot和示例数据,这样的事情可能会起作用:

barplot(
  with(dat,prop.table(table(feel,grade))),
  beside=TRUE,
  xlab="Grade",
  ylab="% Feeling Within Grade Group",
  col=grey((1:5)/5)
)
legend("topright",as.character(feelops),fill=grey(1:5/5))

您可以稍微使用这些选项,但这会产生类似的结果:

enter image description here

答案 1 :(得分:1)

另一种选择是使用更高级别的地图套餐,例如ggplot2lattice。它们比基础包更灵活。在这里,我使用barchart创建2个版本的条形图。第二个使用reshape2以更长的格式放置数据,通常更适合这种情节。

library(lattice) 
library(reshape2)
library(gridExtra)

dat1 <- with(dat,prop.table(table(grade,feel)))
p1 <- barchart(dat1, groups=0)
dat.m <- melt(dat1)
p2 <- barchart(value~grade,groups=feel,data= dat.m, auto.key=TRUE)
grid.arrange(p1,p2)

enter image description here